Batch file 比较批处理文件中的两个日期

Batch file 比较批处理文件中的两个日期,batch-file,Batch File,我使用此选项获取文件的修改日期: @echo off FOR %%? IN ("C:\some.exe") DO ( ECHO Last-Modified Date : %%~t? ) 上面返回的内容类似于:上次修改日期:26/03/2013 14:43 我如何从上面获取日期部分,并将其与另一个文件(其名称包含日期ie:23-Sep-13.exe)进行比较 如果名称中包含日期的文件晚于文件修改版本ie安装更新,我需要能够在批处理文件中执行一些代码 @ECHO OFF SETLOCA

我使用此选项获取文件的修改日期:

@echo off
FOR %%? IN ("C:\some.exe") DO (
    ECHO Last-Modified Date   : %%~t?
)
上面返回的内容类似于:上次修改日期:26/03/2013 14:43

我如何从上面获取日期部分,并将其与另一个文件(其名称包含日期ie:23-Sep-13.exe)进行比较

如果名称中包含日期的文件晚于文件修改版本ie安装更新,我需要能够在批处理文件中执行一些代码

@ECHO OFF
SETLOCAL
:: No doubt for international use, this could be retrieved from the registry
SET monthnames=Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
:: get last modified date of target file - your format as specified
:: (I used THIS BATCH FILE)
FOR %%i IN ("%~f0") DO SET target=%%~ti
:: parse the target date
FOR /f "tokens=1-3delims=/ " %%i IN ("%target%") DO SET targetf=%%k%%j%%i
::
:: parse name from 'other file'
SET other=23-Sep-13.exe
FOR /f "tokens=1-3delims=.- " %%i IN ("%other%") DO SET od=%%i&SET omn=%%j&SET oy=%%k
:: Convert monthname to number
:: @ECHO on
SET om=101
FOR %%i IN (%monthnames%) DO (
IF DEFINED omn IF /i %omn%==%%i (SET omn=) ELSE (SET /a om+=1)
)
:: Build date of 'other file' in same format (YYYYMMDD)
SET otherf=20%oy%%om:~-2%%od%
ECHO is %other% later than %target% ?
ECHO IF %otherf% gtr %targetf% GOTO later
ECHO.
::
:: parse name from 'another other file'
SET other=23-Jan-13.exe
FOR /f "tokens=1-3delims=.- " %%i IN ("%other%") DO SET od=%%i&SET omn=%%j&SET oy=%%k
:: Convert monthname to number
SET om=101
FOR %%i IN (%monthnames%) DO (
IF DEFINED omn IF /i %omn%==%%i (SET omn=) ELSE (SET /a om+=1)
)
:: Build date of 'other file' in same format (YYYYMMDD)
SET otherf=20%oy%%om:~-2%%od%
ECHO is %other% later than %target% ?
ECHO IF %otherf% gtr %targetf% GOTO later
ECHO.
代码以(此批次)的日期为目标(您的'C:\some.exe'-根据需要进行更改)

然后将测试应用于两个不同的
文件名为date+ext
格式化要测试的文件名


如果需要与20世纪的日期进行比较,可以很容易地进行调整…:)

谢谢彼得-这是一种享受。您知道如何做相同的操作,但使用exe的文件版本而不是日期进行比较吗?ie exe文件版本:4.5.6.0=文件名:4050400.exe