У меня есть папка с кучей zip-файлов, некоторые из которых содержат файл «* error.pdf». Мне нужно создать файл «errors.txt», содержащий имена файлов zip, содержащих такой файл ошибки.
Мне нужна помощь с условием. FINDSTR устанавливает для ERRORLEVEL значение 0, если строка найдена, и значение 1, если нет. Я пробовал if not errorlevel 1
и if %ERRORLEVEL% == 0
.
for %%X in (*) do (
"c:\Program Files\7-Zip\7z.exe" l "%%X" | findstr error > nul
if errorlevel 0(
ECHO "%%X" >> errors.txt
)
)
Прямо сейчас ничего не происходит (если условие всегда ложно), если я устанавливаю условие, чтобы оно всегда было истинным, оно записывает все имена файлов в error.txt.
"c:\Program Files\7-Zip\7z.exe" l "%%X" | findstr error
выводит имена файлов *error.pdf
findstr /IEC:"error.pdf"
, так как имена файлов в Windows нечувствительны к регистру и соответствуют описанному вами критерию поиска. Затем поместите пробел междуif errorlevel 0
и(
. Возможно, вы захотите перебирать только ZIP-файлы, поэтому используйтеfor %%X in (*.zip) do
(при необходимости вы даже можете использовать несколько масок, таких как*.zip *.rar
). Наконец, измените эхо на>>errors.txt echo(%%X
, чтобы избежать""
и отслеживание пробелов для вывода... - person aschipfl   schedule 06.06.2019l "%%X" -i!*error.pdf
- person Compo   schedule 06.06.2019if errorlevel 0
означает, что если уровень ошибки равен 0 или больше нуля, вместо этого следует использоватьif not errorlevel 1
. - person Magoo   schedule 06.06.2019