-
(1) e (2)
Você pode usar uma combinação de marcadores,
if
e códigos de retorno :for %%a in (…) do if … "7za.exe" … "%%a" & if not %errorlevel%==0 (set z_file="%%a" & goto error) … :error echo Something was borked for "%z_file%"! >> Compress.log
-
(3)
Você pode chamar a linha de compactação da rotina de erros:
:error echo Error… 7z…
-
(4) e (5)
Agora você está ficando complicado e além das limitações de um arquivo em lote. É possível , mas requer funções avançadas e hacks. Você pode colocar as rotinas de compressão e erro nas sub-rotinas e chamá-las conforme apropriado. Você também pode usar
set
para criar um contador (por exemplo,set /a counter=counter+1
) (esse é um dos motivos para ativar extensões de comando) eif
para lógica (por exemplo,if %counter% leq 3 call :compress
)