Перечислите все файлы .zip, которые содержат файл ошибок (batch, cmd) - PullRequest
0 голосов
/ 06 июня 2019

У меня есть папка с кучей 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
    )
)

Сейчас ничего не происходит (если условие всегда ложно), если я устанавливаю условие if всегда true, оно записывает все имена файлов в errors.txt.

"c:\Program Files\7-Zip\7z.exe" l "%%X" | findstr error выводит имена файлов * error.pdfs

1 Ответ

0 голосов
/ 06 июня 2019

Проблема заключалась в пропуске между if errorlevel 0 и ( (благодаря aschipfl).

Правильное условие для оператора if было также if not errorlevel 1, как упомянуто Magoo

Это рабочий код (с улучшениями, упомянутыми aschipfl)

for %%X in (*.zip) do (
    "c:\Program Files\7-Zip\7z.exe" l "%%X" | findstr error > nul
        if not errorlevel 1 (
        ECHO %%X >> errors.txt
        )
        )
...