2

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

我有一个文件,我首先想看看它是否存在于昨天的日期,如果是真的,那么我会做一些其他的事情。我坚持的问题是将文件日期与“昨天的”日期进行比较。当我将它们回显到屏幕时,它们看起来完全一样,但我的批处理文件说它们不是。代码的第一部分来自昨天.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 ????

4

1 回答 1

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
于 2012-11-28T17:57:13.547 回答