好的,我昨天正在使用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:databackupgams1bu"
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????
SET filename="B:databackupgams1bu"
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