2015-11-20 4 views
2

Мне нужно обрабатывать файлы старше дня. Поэтому я использую это:Как получить код ошибки в файлах forfiles?

forfiles -m %%~nxf /C "cmd /c start /wait /MIN 7z.exe t %%f" /d +1 

Теперь, я хочу проверить, удалось ли выполнить прогресс 7z.exe. Как я могу получить errorlevel команды внутри команды forefiles? Есть ли возможность?

Я уже пробовал следующие способы, которые не работали. Errorlevel всегда возвращает 0, даже если я использую разбитые файлы, которые должны возвращать ошибку (2).

forfiles -m %%~nxf /C "cmd /c start /wait /MIN 7z.exe t %%f && echo ok || echo delete %%f" /d +1 

forfiles -m %%~nxf /C "cmd /c start /wait /MIN 7z.exe t %%f && if errorlevel 2 (DEL %%f)" /d +1 
+2

Не используйте 'start' вообще, просто выполните' 7z' непосредственно, как 'cmd/c 7z.exe .............' – wOxxOm

+1

используйте '||' сразу после вызовите '7z.exe', чтобы поймать экземпляры, где это не удается –

+1

7z.exe t %% f принадлежит вместе, поэтому это не работает – mediii

ответ

1

Предполагая 7z.exe это действительно доставить ErrorLevel, я думаю, что условные команды Сепараторы построения запросов к ErrorLevel из cmd, а не 7z.exe. Следующие должны работать:

forfiles /M "%%~nxf" /C "cmd /C 0x22start /WAIT /MIN 7z.exe t 0x22%%~f0x22 && echo ok || echo delete 0x22%%~f0x220x22" /D +1 

Или вы можете сделать это и без start:

forfiles /M "%%~nxf" /C "cmd /C 0x227z.exe t 0x22%%~f0x22 && echo ok || echo delete 0x22%%~f0x220x22" /D +1 

Как вы могли заметить, я исправил некоторые цитаты вопросы для заданных путей.

Смежные вопросы