批处理文件如果修改日期=昨天日期(运行命令)

时间:2012-11-28 17:53:10

标签: date batch-file compare dos

好的,我昨天正在使用Rob Van der Woude.bat代码以及我在其他帖子的帮助下放在一起的一些代码。

我有一个文件,我首先想知道它是否与昨天的日期存在,如果是,那么我会做其他一些事情。我坚持的问题是将申报表与“昨天”的日期进行比较。当我将它们回显到屏幕时,它们看起来完全相同,但我的批处理文件说它们不是。代码的第一部分来自yesterday.bat,以显示我插入代码的位置。非常感谢任何指导。

Display the results
ECHO Format:     YYYYMMDD  (%LocalFormat%)
ECHO.==================================
CALL ECHO Yesterday:  %SortYest%  %yLocal%
ECHO Today:      %SortDate%  %Today%

:: Check if file gams1bu from yesterday exists
SET filename="B:\data\backup\gams1bu" 
IF NOT EXIST %filename% GOTO log 
FOR %%f IN (%filename%) DO SET filedatetime=%%~tf 

::This displays the results of the two variables
CALL ECHO %yLocal%
CALL ECHO %filedatetime:~0,-10%


IF %filedatetime:~0,-10% == %yLocal% goto same

goto notsame

:same
echo Dates the same, do some code here

goto next

:notsame
echo Dates NOT the same, do some code here  

即使我运行此日期时日期显示相同,批处理文件也会转到:notsame ????

1 个答案:

答案 0 :(得分:1)

SET filename="B:\data\backup\gams1bu" 
IF NOT EXIST %filename% GOTO log 
FOR %%f IN (%filename%) DO SET filedatetime=%%~tf 

似乎没有在我的提示符(cmd.exe)上设置提交时间

这将以YYYYMMDD 20121128格式为您提供当前日期:

for /F "tokens=2-4 delims=/ " %i in ('date /t') do SET datestamp=%k%i%j
SET datestamp=20121128


C:\>echo %datestamp%
20121128

(原始命令来自:)

http://www.sprint.net.au/~terbut/usefulbox/msdoscmds.htm

您好

如果您需要以YYYYMMDD格式获取文件的日期,您可以这样做:

假设文件名为FILE_YOU_NEED.txt

for %a in (FILE_YOU_NEED.txt) do set FileDate=%~ta
for /F "tokens=1-3 delims=/ " %i in ('echo %FileDate%') do SET datestamp=%k%i%j

如果您的filedatetime变量同时包含您可以尝试的日期和时间 比较一个只有日期而不是时间的变量:

set FILEDATETIME=12/02/2012 13:45

echo %FILEDATETIME%
12/02/2012 13:45

set FILEDATEONLY=%FILEDATETIME:~0,10%

echo %FILEDATEONLY%
12/02/2012