Forfiles循环/错误级别问题

时间:2014-01-28 00:22:32

标签: batch-file if-statement errorlevel

我尝试使用forfiles检查文件夹中是否有更新的.xlsx文件(少于1天),然后根据是否有更新的文件运行另一个bat文件。

最初我有一个脚本可以做到这一点,但有些日子里有多个新的.xlsx文件,所以脚本"循环"并会多次运行success.bat文件。

如果未找到更新的文件,cmd将退出并显示错误,因此我使用它来运行fail.bat文件。

这就是我现在所拥有的:

@echo on
set found=0
forfiles /p C:\ /m *.xlsx /d 0 /c "cmd /k set found=1"
if /i %found%==1 (
Call Success.bat
) else (
if /i %found%==0 (
Call Fail.bat  
)
PAUSE

现在这适用于有更新文件的时候......即它摆脱了循环问题。

但是如果没有找到更新的文件并使用

,我现在遇到cmd退出的问题
if ERRORLEVEL 1 call fail.bat

似乎不再为我工作了...... 我对这个带有.bat文件的if / else东西没什么好处

1 个答案:

答案 0 :(得分:2)

forfiles /p c:\ /m *.xlsx /d 0 2>nul && call Success.bat || call Fail.bat

2>nul将取消错误消息,您还可以添加>nul来禁止标准输出(forfiles找到的任何文件)。如果扩展名中没有文件,则会设置错误级别 - 只有在设置了错误级别时才会出现||之后的命令。

因此,如果找不到具有指定扩展名的文件,则会调用Fail.bat,并转到脚本的末尾。如果找到文件,则会调用Success.bat