我需要根据文件的日期戳分支批处理文件。基本上,每天必须生成一个文件,当天任何时候都可以。
伪代码
if (last modified date stamp of c:\temp\file1.txt) equals (current date) then goto TaskSucceeded else goto TaskFailed
:TaskFailed
echo "Task Failed"
exit /B
:TaskSucceeded
echo "Task Succeeded"
exit /B
任何帮助都将不胜感激。
答案 0 :(得分:1)
此.bat等待1分钟,然后检查当天,然后执行操作 我是从HERE
得到的您可以将时间更改为每24小时一次,并将CALL
个文件替换为您要调用的文件
@ECHO OFF
:LOOP
ECHO Waiting for 1 minute...
PING -n 60 127.0.0.1>nul
IF %DATE:~0,3%==Mon CALL SomeOtherFile.cmd
IF %DATE:~0,3%==Tue CALL SomeOtherFile.cmd
IF %DATE:~0,3%==Wed CALL SomeOtherFile.cmd
IF %DATE:~0,3%==Thu CALL WootSomeOtherFile.cmd
IF %DATE:~0,3%==Fri CALL SomeOtherFile.cmd
IF %DATE:~0,3%==Sat ECHO Saturday...nothing to do.
IF %DATE:~0,3%==Sun ECHO Sunday...nothing to do.
GOTO LOOP
阅读.bat
中的日期函数答案 1 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q36498808.txt"
FOR %%a IN ("%filename1%") DO ECHO %date%|FINDSTR /L "%%~ta" 2>NUL >nul
IF ERRORLEVEL 1 (ECHO failed) ELSE (ECHO succeeded)
SET "filename1=my.7z"
FOR %%a IN ("%filename1%") DO ECHO %date%|FINDSTR /L "%%~ta" 2>NUL >nul
IF ERRORLEVEL 1 (ECHO failed) ELSE (ECHO succeeded)
SET "filename1=missing.7z"
FOR %%a IN ("%filename1%") DO ECHO %date%|FINDSTR /L "%%~ta" 2>NUL >nul
IF ERRORLEVEL 1 (ECHO failed) ELSE (ECHO succeeded)
GOTO :EOF
由于您没有向我们展示您显示日期的格式 - dir
列表中的日期或%date%
中的日期,因此上述内容只是一个建议。
我只是使用方便的文件名进行测试。这个例程适合我。
该方法的关键是,如果%date%
为Fri 08-04-2016
且文件时间为08-04-2016 10:43am
,则findstr
将找到匹配,就像日期字符串或时间字符串由echo
提供,然后findstr
将设置errorlevel 0,如果日期字符串不匹配或文件丢失,则将设置errorlevel 1或2。
您需要检查日期显示的精确细节,以确定它在您的情况下是否可靠。