批处理 - 递归地将 if-else 与 forfile 一起使用



我使用forfiles命令来检查目录中的文件是否具有实际日期:

forfiles /p C:copies /s /m *.bak /d 0 
if %errorlevel% == 0 (
  echo OK
) else (
  echo Non OK
  EXIT /%errorlevel%
)

但是if-else statement仅适用于最后一个文件。如果我使用 /c 参数,它可以正常工作,但我无法使用else进行其他思考:

/c "cmd /c echo @file is outdated." 

将 if-else 语句与 forfile 一起使用的最佳方法是什么?

您可以先尝试迭代文件,然后使用 forfiles:

setlocal enableDelayedExpansion
for /r "C:copies" %%# in (*.bak) do (
  (forfiles /p "%%~dp#"  /m "%%~nx#" /d 0 )&&(
      echo ok
      color
  )||(
     echo not ok
     exit !errorlevel!
  )
)

最新更新