kalamari
Goto Top

Auf bestehende Dateien per xml Datei überprüfen.

Hallo

Ich habe einige Probleme, um bestehende Dateien auf einem Pfad zu überprüfen und falls diese Datei bereits existiert, sollte diese nicht überschrieben werden.
Da immer eine meta.xml existiert, in der die Versionsnummer angegeben ist, dachte ich, ich verwende einfach diese Datei.
Versucht habe ich mein glück mit findstr in dieser Ausfürhung ...

if exist "Pfad\datei\meta.xml" findstr /c:"3.0 b1123" "Pfad\datei\meta.xml" >nul
if errorlevel 0 echo Die Anwendung ist bereits in der Version 3.0 vorhanden.
if errorlevel 1 rd "Pfad\datei\" /s /q & echo Eine frühere Version der Anwendung wurde gefunden und wird entfernt.

In der meta.xml steht der Eintrag so drin: <version>3.0 b1123</version>

Ja, leider klappt das nicht so wirklich.
Ist die richtige Datei Version vorhanden, kommt schön die Meldung "Die Anwendung ist bereits in der Version 3.0 vorhanden."
Ist die richtige Datei aber nicht vorhanden, oder es fehlt überhaupt der komplette Ordner, kommt auch diese Meldung...

Bitte um Hilfe, was mache ich falsch oder wie kann ich das Problem besser lösen?
Vielen dank

Content-ID: 175849

Url: https://administrator.de/forum/auf-bestehende-dateien-per-xml-datei-ueberpruefen-175849.html

Ausgedruckt am: 23.12.2024 um 14:12 Uhr

bastla
bastla 06.11.2011 um 13:45:07 Uhr
Goto Top
Hallo Kalamari!
if errorlevel 0
ist eine sinnlose Abfrage, da damit geprüft wird, ob der Errorlevel >= 0 ist (siehe "if /?") ...

... daher entweder
if exist "Pfad\datei\meta.xml" (  
    findstr /c:"3.0 b1123" "Pfad\datei\meta.xml" >nul  
    if errorlevel 1 (
        rd "Pfad\datei\" /s /q & echo Eine frühere Version der Anwendung wurde gefunden und wird entfernt.  
    ) else (
        echo Die Anwendung ist bereits in der Version 3.0 vorhanden.
    )
)
oder gleich
findstr /c:"3.0 b1123" "Pfad\datei\meta.xml" >nul 2>nul && (  
    echo Die Anwendung ist bereits in der Version 3.0 vorhanden.
) || (
    rd "Pfad\datei\" /s /q 2>nul && echo Eine frühere Version der Anwendung wurde gefunden und wird entfernt.  
)

Was sollte übrigens passieren, wenn "Pfad\datei\meta.xml" nicht gefunden wird?

Grüße
bastla
Kalamari
Kalamari 06.11.2011 um 14:07:18 Uhr
Goto Top
Erstmal vielen Dank für Deine Hilfe!
Sollte die meta.xml gar nicht vorhanden sein, soll ein Ordner erstellt werden und die benötigten Dateien da rein kopiert werden.
Hmm, da stellt sich wieder die Frage, ob diese dann überhaupt vorhanden ist.

Also, ich hab da einen Downloader, der downloadet auf Wunsch die verschiedenen Applikationen, welche dann auf einen USB Stick kopiert werden sollten.

Datei wäre der Ordner vom Downloader und überprüft, ob überhaupts eine xml vorhanden ist.
Ist sie vorhanden, kann man weiter machen mit der Überprüfung
Da sollte das dann doch so gehen in etwa - jetzt grob geschrieben ...

if exist "Pfad\datei\meta.xml" if exist "USBStick\datei\meta.xml" (

Das sollte nur als Abgleich dienen, ob die gewünschte Datei vor dem Kopieren überhaupts in dem Ordner von dem Downloader vorhanden ist oder nicht?
Das heißt, das müsste noch in Deinem Code ein der ersten Zeile mit eingebaut werden oder?

Hmm, ich bin jetzt total verwirrt...
Kurz gesagt, es oll überprüft werden, ob die Datei in dem Ordner vom Downloader überhaupts zum Download ausgewählt wurde, wenn ja, ob die Datei auch auf dem Stick überhaupt in dem Ordner eine Datei namens meta.xml vorhanden ist.
Ist sie vorhanden, soll sie überprüft werden.
Ist diese Datei älter, soll sie entfernt werden und die neue drauf kopiert werden.
Ist das die identische Datei, soll gar nichts passieren...
Ist die Datei auf dem USB Stick nicht vorhanden, jedoch vom Downloader herunter geladen worde sein, soll sie kopiert werden.

Boah, jetzt bin ich überfordert und muss mir das nochmal durch denken.

Inzwischen vielen Dank für den Ansatz, Dein erster Code gefällt mir besser, da ich den besser verstehe face-smile
bastla
bastla 06.11.2011 um 14:56:17 Uhr
Goto Top
Hallo Kalamari!
Dein erster Code gefällt mir besser, da ich den besser verstehe face-smile

Grüße
bastla