1

我正在尝试使用 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 东西

4

1 回答 1

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

2>nul将抑制错误消息,您还可以添加>nul以抑制标准输出(通过 找到的任何文件forfiles)。如果不存在带有扩展名的文件,则将设置错误级别 -||只有在设置了错误级别时才会出现以下命令。

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

于 2014-01-28T00:34:16.657 回答