我有一个批处理文件我想在文件夹中搜索今天更新的任何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
答案 0 :(得分: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
)
这应该可以正常工作
莫纳
答案 1 :(得分:1)
这对我有用:
@echo off
forfiles /p C:\ /m *.xlsm /d 0 /c "cmd /c call Update.bat"
if ERRORLEVEL 1 start FailEmail.vbs
答案 2 :(得分:0)
我认为你的代码应该可行 - 这里有一些小改动。
它只会echo
屏幕上的命令,供您测试。
要考虑的一点是,DIR命令还将匹配短名称中的*.xls
个文件。
@echo off
set "var=%date:~-10%"
dir "*.xlsm"|find "%var%">nul && (echo CALL Update.bat) || (echo start failemail.vbs)
pause