2

我有一个批处理文件,我想在文件夹中搜索今天更新的任何 xlsm 文件。如果它从今天找到一个 xlsm 文件,它就会运行另一个 bat 文件。如果没有更新的文件,它应该运行一个 .vbs 文件(发送电子邮件)然后退出。

目前我有以下内容:

@echo off
set var=%date:~-10%
dir "*.xlsm"|find "%var%">nul&&CALL Update.bat||EXIT

我想我可能需要包含某种 IF/ELSE 而不是当前的方法,但我的技能缺乏..

编辑: 根据@Monacraft 的回答,我采用的实际解决方案是:

@echo off
forfiles /p C:\ /m *.xlsm /d 0 /c "cmd /c call Update.bat"
if ERRORLEVEL 1 start FailEmail.vbs
4

3 回答 3

1

这对我有用:

@echo off
forfiles /p C:\ /m *.xlsm /d 0 /c "cmd /c call Update.bat"
if ERRORLEVEL 1 start FailEmail.vbs
于 2013-10-17T21:19:04.830 回答
1

如果使用 Windows 7,你可以这样做forfiles

@echo off
set found=FALSE

forfiles /p "C:\...[path to folder]" /m *.xlsm /d +1 /c "cmd /c Echo Updating...&CALL Update.bat&set found=TRUE"

if /i %found%==False (
start email.vbs
) else (
Exit
)

那应该可以正常工作

莫娜

于 2013-10-17T03:24:07.750 回答
0

我认为您的代码应该可以工作 - 这里有一些小改动。

它只是echo屏幕上的命令,供您测试。

需要考虑的一点是 DIR 命令还将匹配*.xls短名称中的文件。

@echo off
set "var=%date:~-10%"
dir "*.xlsm"|find "%var%">nul && (echo CALL Update.bat) || (echo start failemail.vbs)
pause
于 2013-10-17T05:25:12.733 回答