2012-06-18 159 views
1

我一直在處理批處理文件中的一些代碼,用於評估兩個文件日期。如果一個日期比另一個更大,那麼它會運行另一個bat文件。我想要做的是將這兩個日期格式設置爲YYYYMMDD,以便我可以使用GTR大於)。批量格式化文件日期YYYYMMDD

代碼在下面,但如果我使用==等於),它會正常工作,因爲它正在評估字符串。我只想知道一個文件日期是否大於其他文件日期。

我不是要求某人修改下面的代碼,但如果你能告訴我如何格式化日期,我將非常感激。


set Fileone=File1.txt 
set FileTwo=File2.txt 

pushd "D:\Board\Broadcast\FA_Report8_A" 
FOR %%f IN (%FileOne%) DO SET filedatetime=%%~tf 
FOR %%f IN (%FileTwo%) DO SET filedatetime2=%%~tf 
SET filedatetime2=%year%%month%%day% 
IF %filedatetime:~0, 10% GTR %filedatetime2:~0, 10% ( 
echo FileOne Greater - run bat 
timeout /t 20 /nobreak 
goto Finish 
) else (
echo FileOne not Greater - Finish 
goto Finish 
) 
:Finish 
echo finished 
pause 
+0

很好的參考在這裏:http://www.robvanderwoude.com/datetimentmath.php – andyb

回答

10

這不是與不同的日期格式的機器,但最簡單的方法之間移植是使用字符串:%var:~STARTPOS,LENGTH%

set filedatetime=14/06/2012 12:26 
set filedatetime=%filedatetime:~6,4%%filedatetime:~3,2%%filedatetime:~0,2% 
echo "%filedatetime%" 

"20120614" 
+0

這很好,謝謝,很好地工作 – Cidr

2

可以在其零部件使用FOR/F分離日期命令:

set filedatetime=14/06/2012 12:26 
for /F "tokens=1-3 delims=/ " %%a in ("%filedatetime%") do (
    set filedatetime=%%c%%b%%a 
) 

這種形式可以防止你犯了錯誤的位置或大小每個子串,並且很容易改變部件的順序。例如,如果您的日期是MM/DD/YYYY:

set filedatetime=%%c%%a%%b 

類型FOR /?瞭解更多詳情。