Batch Errorlevel

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

  • Hallo.
    Ich hab ein Problem damit, das eine Variable nicht in einem Text geschrieben wenn, falls der Errorlevel >=1 ist.
    Folgende Zeilen dazu:


    Setlocal EnableDelayedExpansion
    CD /D "Z:\Backups 2015"
    FOR /F "tokens=* delims= " %%A in ('dir /b') do (
    "C:\Program Files\7-Zip\7z.exe" t "%%A"
    if errorlevel 1 echo %%A >> "H:\Test7z.txt"
    )


    Die Zeilen sollen die Archive *.7z in dem Ordner "Backups 2015" testen, und bei einem Fehler den betreffenden Dateinamen in "H:\Test7z.txt" eintragen. Dieses mit >>, weil es natürlich angehängt werden muss, um eben alle fehlerhaften Dateien zu lesen.


    Was geht nicht:
    Scheinbar wird "if errorlevel.........." ignoriert. Ausgabe ist dann auch:
    if errorlevel 1 echo backupdatei 1.7z 1>>"H:\Test7z.txt".


    wobei mich das
    1>>"H:\..........." irritiert


    Danke!




    EDIT:
    Ich bin da etwas verwirrt:
    If Errorlevel 1
    kümmert sich nur um die Variable, also es werden beispielsweise "Januar Komplett!" als "Januar Komplett" ausgelesen, das dann einen Fehler ausgibt, das diese Datei nicht vorhanden ist.


    If %Errorlevel% EQU 1
    ignoriert komplett die Zeile ab "if....." (siehe oben)
    Das heisst, ausgeführt wird augenscheinlich nur:
    FOR /F "tokens=* delims= " %%A in ('dir /b') do (
    "C:\Program Files\7-Zip\7z.exe" t "%%A"


    das "if %errorlevel%....." ist komplett weg.

  • Setlocal DisableDelayedExpansion


    scheint das Problem des "!" zu lösen.
    Trotzdem ist in der For - Schleife kein "aktueller" Errorlevel.
    Das heisst, egal, ob 7zip einen Fehler in der Konsole ausgibt, der Errorlevel ist immer 0



    EDIT
    Damit das Problem einigermassen verständlich ist.
    Es soll getestet werden, ob sich unter den 7zips nicht doch eine defekte Datei befindet, die dann getrost gekübelt werden kann.