2014-06-25 175 views
1

{ 组文件1 = C:\文件路径比较两个文件日期

组文件2 = C:\文件路径

FOR%I IN(%FILE1%)DO SET DATE1 = %%〜TI \

FOR%I IN(%FILE2%)DO SET DATE2 = %%〜TI

IF “%DATE1%” GTR “%DATE2%” ECHO的文件具有相同的年龄& & GOTO END

FOR%I IN( 'DIR/B/O:d “%FILE1%”, “%FILE2%”')DO SET NEWEST = %%我

ECHO较新的文件 “%NEWEST%”

回答

0

试试这个:

@echo off 
rem --compares the age of two files 
rem --by Vasil "npocmaka" Arnaudov 

call :isOlder  "C:\test.file1" "C:\test.file2" 

goto :eof 

:isOlder [%1 path to first file ; %2 path to second file] 
    setlocal 
     call :get_file_c_time "%~1" time1 
     call :get_file_c_time "%~2" time2 
    if "%time1%" LEQ "%time2%" (
      echo YES 
     ) else (
      echo NO 
     ) 
goto :eof 

:get_file_c_time [ %1 path to file; %2 variable to assign value ] 
     set file_path=%~1 

     if not exist "%file_path%" echo file %1 does not exist&& exit /b 1 

     if "%~2" equ "" echo need a secont parameter && exit /b 2 

     setlocal enableDelayedExpansion 

     for /f "skip=5 tokens=1,2,3,4,5,6 delims=/:.гчЈз " %%T in ('dir /tc "%file_path%"') do (
     if "%%Y" EQU "PM" (
      set /a "hour=%%W+12" 
     ) else (
       set hour=%%W 
     ) 
     set ftime=%%V%%U%%T!hour!%%Y 
     goto :endfor 
     ) 
:endfor 

endlocal & set "%~2=%ftime%" 
goto :eof 

这取决于时间设置,但在大多数情况下应该工作.. 另一种方法是用WMIC/WMI,但我需要一些时间来创建脚本

+0

感谢我会尽力这第一个 – user3764876

+0

可能我知道这条线是什么:.гчЈз? ('dir/tc'%file_path%'')do( if(%%))for/f“skip = 5 tokens = 1,2,3,4,5,6 delims =/:.гчЈз”%% Y“EQU”PM“( – user3764876

+0

@ user3764876年/小时令牌,可能出现在不同的东欧语言(如来自保加利亚的Im)以及日期字符串将被它们分开 – npocmaka