2012-11-28 91 views
2

好吧,我正在使用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

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

似乎并没有对我的提示进行设置filedatetime(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 
+0

gams1bu文件必须存在才能给出filedatetime。这很重要,因为我需要创建文件的日期,以便我可以将其与昨天的日期进行比较。 – TrevorAbell

+0

喜 如果你需要得到YYYYMMDD格式的文件的日期,你可以这样做: 假设文件的名称是FILE_YOU_NEED.txt 为一%的(FILE_YOU_NEED.txt)做设定FILEDATE = %〜ta for/F“tokens = 1-3 delims = /”%i in('echo%FileDate%')do SET datestamp =%k%i%j –

+0

对不起,我想我没有已清楚。我以MM/DD/YYYY格式确定昨天的日期。我也拉了一个文件的创建日期。格式为MM/DD/YYYY HH:mm PM。如果二者相等我想回到“日期是相同的” 我试图用 %filedatetime截断文件日期:〜0,-10% 但是,当我比较它仍然说, 12/02/12不等于12/02/12。我认为,%提交时间:〜0,-10%只是“隐藏时间”,但它仍被用于比较。是对的吗?我该如何解决这个问题? – TrevorAbell

相关问题