我正在编写一个 for 循环来对 .xml 和 .psr 文件执行 forfiles 命令。目前,如果它找到一种文件类型而不是另一种文件类型,它将显示“错误:未找到具有指定搜索条件的文件”,但我希望错误说明未找到哪种文件类型。我在 for 循环中有一个 if 语句应该覆盖错误,但它不起作用。这是循环:
FOR %%G IN (.xml, .psr) DO (
FORFILES /P "%xmlDir%" /M *%%G /D -%days% /C "CMD /C DEL @FILE"
IF %ERRORLEVEL% NEQ 0 (
ECHO No matches found for %%G files older than %days% days
)
)
编辑:感谢您的回答。我的 for 循环现在按预期工作,最终看起来像这样:
FOR %%G IN (.xml, .psr) DO (
FORFILES /P "%xmlDir%" /M *%%G /D -%days% /C "CMD /C DEL @FILE" >nul 2>nul
IF ERRORLEVEL 1 (
ECHO No %%G files %days% days old or older were found.
) ELSE (
ECHO %%G files as old as %days% days or older have been deleted.
)
)
标准delayed expansion
错误 - 您需要调用 delayexpansion [数百篇关于此的 SO 文章 - 使用搜索功能] 以显示或使用在括号内的一系列指令(又名“代码块”)中更改的任何变量的运行时值.
IF %ERRORLEVEL% NEQ 0 (
是问题 -遇到errorlevel
时由其值替换for
。
解决此问题的简单方法是使用常规errorlevel
处理:
if errorlevel 1 (
IE。如果errorlevel
是(1 或大于 1)
至于消息,请尝试2>nul
将错误消息重定向到nul
或使用
if exist "%xmldir%\%%G" (forfiles...
) else (echo no %%G files found)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句