У меня есть пакетный файл, который анализирует кучу имен файлов из текстового файла и объединяет их в один сингл - ранее обсуждалось here. Однако я не хочу, чтобы строка содержала файл, если файл выдает ошибку, когда я запускаю ее через некоторую команду (например, проверку VCS). Вот моя попытка:Вопрос об ошибке в пакетном файле Windows
set FILE_LIST=
for /f %%x in (temp.txt) do (
:: perform a VCS test
accurev diff -b %%x
:: skip concatenation if error level is > 2
IF errorlevel 2 GOTO NEXT
:: perform the concatenation
set FILE_LIST=!FILE_LIST! %%x
:NEXT
:: print a message if here due to an error above
IF errorlevel 2 echo VCS problem with this file: %%x
)
Проблема в том, - сценарий, как представляется, прекратить выполнение цельного для цикла, как только он находит один Равно больше 2. Если есть пяти файлов в списке, а третьи из них имеет проблема VCS - скрипт обрабатывает только первые два.
Похоже, что уровень ошибок не сбрасывается на каждой итерации. Можно ли вручную сбросить его до 0 в конце цикла? –
mmyers: кажется, что [совет из интернетов] (http://batcheero.blogspot.com/2007/07/never-set-errorlevel.html) никогда не должен вручную устанавливать переменную errorlevel. – dls
ahh - Я вижу, что форматирование гиперссылки не работает в комментариях. – dls