我有一个包含一堆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
)
)
现在没有任何反应(如果condition始终为false),如果将if条件始终设置为true,它将所有文件名写入errors.txt。
"c:\Program Files\7-Zip\7z.exe" l "%%X" | findstr error
确实输出* error.pdfs
答案 0 :(得分:0)
问题是if errorlevel 0
和(
之间缺少空格(感谢aschipfl)。
如Magoo所述,if语句的正确条件也是if not errorlevel 1
这是工作代码(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
)
)