I have a batch file in which I execute the following line to list the contents of an archive:
"\Program Files\7-Zip\7z.exe" l "\Backup Google Docs.7z"
The archive is intentionally corrupted.
cmd.exe displays this:
How can I catch this error in my code?
Any program's exit code is stored in the %ERRORLEVEL%
variable in a batch script.
From the 7-zip manual:
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
So: you can do:
"\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
Caution, if errorlevel N
checks that %ERRORLEVEL%
is greater or equal than N, therefore you should put them in descending order.