W pliku wsadowym w systemie Windows używam 7-zip w następujący sposób:
...\right_path\7z a output_file_name.zip file_to_be_compressed
Jak mogę sprawdzić kod wyjścia 7z
i podjąć odpowiednie działania?
W pliku wsadowym w systemie Windows używam 7-zip w następujący sposób:
...\right_path\7z a output_file_name.zip file_to_be_compressed
Jak mogę sprawdzić kod wyjścia 7z
i podjąć odpowiednie działania?
Odpowiedzi:
Sprawdź, czy kod powrotu jest większy lub równy 1:
if ERRORLEVEL 1 echo Error
lub
if %ERRORLEVEL% GEQ 1 echo Error
lub przetestuj kod powrotu równy 0:
if %ERRORLEVEL% EQU 0 echo OK
Możesz użyć innych poleceń, takich jak GOTO
gdzie pokazuję echo
.
0 was unexpected this time.
%ERRORLEVEL%
wynosi 0, mimo że wystąpił błąd. Zdarzyło się podczas %ERRORLEVEL%
wpisywania pliku cmd. Próbowanie start /wait
nie zadziałało. Jedyne, co zadziałało, toif errorlevel 1 (...)
NEQ
zamiast EQU
obsługi wykrywania ujemnych kodów powrotu? Nie mam pojęcia, czy Windows XP to robi, ale w nowoczesnych systemach Windows jest to rzecz…
To naprawdę działa, gdy masz: App1.exe wywołuje -> .bat, który działa -> app2.exe
App2 zwraca poziom błędu 1 ... ale musisz go złapać w .bat i ponownie podnieść do app1 ... w przeciwnym razie .bat zjada poziom błędu, a app1 nigdy nie wie.
Metoda:
W .bat:
app2.exe
if %ERRORLEVEL% GEQ 1 EXIT /B 1
Jest to sprawdzanie poziomu błędu po aplikacji2. Jeśli> 0, to .bat kończy działanie i ustawia poziom błędu na 1 dla aplikacji wywołującej 1.
if %ERRORLEVEL% GEQ 1 EXIT /B %ERRORLEVEL%
.
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
może być lepszym rozwiązaniem. Ale naprawdę musisz wiedzieć, co program zwraca w przypadku błędów. Niektóre programy zwracają pewne niezerowe kody dla specjalnych rodzajów sukcesu.