2011-10-13 17 views
8

Mam plik wsadowy, w którym należy wykonać następującą linię do listy zawartość archiwum:Złap błąd wewnątrz pliku wsadowego (7-zip)

"\Program Files\7-Zip\7z.exe" l "\Backup Google Docs.7z" 

Archiwum jest celowo uszkodzone.

cmd.exe wyświetlacze to:

enter image description here

Jak mogę nadrobić ten błąd w moim kodu?

Odpowiedz

19

Kod wyjścia dowolnego programu jest przechowywany w zmiennej %ERRORLEVEL% w skrypcie wsadowym.

z podręcznika 7-zip:

7-Zip returns the following exit codes: 

Code Meaning 
0 No error 
1 Warning (Non fatal error(s)). For example, one or more files were locked by some other application, so they were not compressed. 
2 Fatal error 
7 Command line error 
8 Not enough memory for operation 
255 User stopped the process 

sposób: można zrobić:

"\Program Files\7-Zip\7z.exe" l "\Backup Google Docs.7z" 
if errorlevel 255 goto:user_stopped_the_process 
if errorlevel 8 goto:not_enough_memory 
if errorlevel 7 goto:command_line_error 
if errorlevel 2 goto:fatal_error 
if errorlevel 1 goto:ok_warnings 

ostrożnością if errorlevel N sprawdza, %ERRORLEVEL% jest większa lub równa N, dlatego należy umieścić je w Kolejność malejąca.

+0

Niż. To działa idealnie! –

4

Sprawdź, czy ERRORLEVEL jest ustawiony na 1 zaraz po wywołaniu 7z.exe i odpowiednio zareaguj. ERRORLEVEL jest kodem wyjścia z ostatniego uruchomionego programu. Kod zakończenia 1 lub więcej oznacza błąd, a zero wskazuje na sukces. Komenda IF ERRORLEVEL sprawdza, czy wyjście jest większe lub równe argumentowi, więc JEŻELI ERRORLEVEL sprawdza poziom błędu jednego lub więcej.

Oto przykład:

"\Program Files\7-Zip\7z.exe" l "\Backup Google Docs.7z" > nul 
IF ERRORLEVEL 1 goto ziperror 
@echo 7-Zip worked 
goto :eof 

:ziperror 
@echo 7-Zip failed 
goto :eof 
Powiązane problemy