批处理文件if语句基于文件的日期戳

时间:2016-04-08 11:48:21

标签: batch-file windows-7

我需要根据文件的日期戳分支批处理文件。基本上,每天必须生成一个文件,当天任何时候都可以。

伪代码

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

任何帮助都将不胜感激。

2 个答案:

答案 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。

您需要检查日期显示的精确细节,以确定它在您的情况下是否可靠。

相关问题