Catch an error inside a batch file (7-zip) Catch an error inside a batch file (7-zip) windows windows

Catch an error inside a batch file (7-zip)


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_processif errorlevel 8 goto:not_enough_memoryif errorlevel 7 goto:command_line_errorif errorlevel 2 goto:fatal_errorif 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.


Check if the ERRORLEVEL is set to 1 just after the call to 7z.exe and react appropriately. The ERRORLEVEL is the exit code from the last program that was run. An exit code of 1 or more indicates an error while zero indicates success. The IF ERRORLEVEL command checks if the exit is greater than or equal to the argument so IF ERRORLEVEL checks for an error level of one or more.

Here is an example:

"\Program Files\7-Zip\7z.exe" l "\Backup Google Docs.7z" > nulIF ERRORLEVEL 1 goto ziperror@echo 7-Zip workedgoto :eof:ziperror@echo 7-Zip failedgoto :eof