Windows批处理脚本:比较两个文件的创建日期

时间:2011-07-18 15:55:15

标签: windows scripting batch-file

我想基于两个文件的创建日期的比较来分叉我的Windows批处理脚本,我不知道从哪里开始。我觉得必须有办法。有什么想法吗?

更新 在PA的答案中尝试了解决方案。我将代码片段逐字复制到当前脚本的末尾。然后,我在脚本的早期添加了这个:

IF EXIST "%PROGRAMFILES(X86)%" CALL :getCreationDate "%PROGRAMFILES(X86)%\oracle\jinitiator 1.3.1.28\lib\security\certdb.txt"

执行时出错:     别名动词无效。

3 个答案:

答案 0 :(得分:3)

你需要在等号之前放一个插入符号以逃避它(cmd.exe太棒了)。我已经验证了这项工作:

setlocal enableextensions enabledelayedexpansion
call :getCreationDate "C:\Windows\Notepad.exe"
echo Creation Date is: %creationdate%
endlocal
goto :EOF
:getCreationDate
set FILE=%~f1
set FILE=%FILE:\=\\%
for /F "skip=1 tokens=* usebackq" %%A in (`wmic datafile where name^="%FILE%" get creationdate`) do (
    set creationdate=%%A
)
goto :EOF

答案 1 :(得分:1)

在bat中,您可以使用WMIC DATAFILE动词使用GET CREATIONDATE命令获取文件的创建日期。

您需要将命令的输出捕获到变量中,请参阅HELP FORHELP SET

您可以使用:labelGOTO :eof创建一个将此功能组合在一起的功能。

请注意,对于WMIC DATAFILEWHERE NAME=子句需要完全指定的文件名。请参阅HELP CALL%~f修饰符。

另请注意,WMIC DATAFILE WHERE NAME=需要将文件名中的反斜杠加倍。请参阅HELP SET% : = %语法,以使用双反斜杠替换单个反斜杠。

像这样......

:getCreationDate
set FILE=%~f1
set FILE=%FILE:\=\\%
FOR /F "skip=1 tokens=* usebackq" %%A IN (`wmic datafile where name="%FILE%" get creationdate`) DO (
  SET CREATIONDATE=%%A
)
goto :eof

您需要使用CALL :label来调用它。

CALL :getCreationDate myfile.txt

您需要提取您感兴趣的日期时间部分。使用HELP SET修饰符查看~

最后,您需要比较返回的日期文件。请参阅HELP IF

答案 2 :(得分:0)

试试这个:

wmic datafile where name='c:\\users\\ovadia\\test\\addx.txt'     get 'LAST MODIFIED' > dateofNEWadd.txt

wmic datafile where name='c:\\users\\ovadia\\test\\prevaddx.txt' get 'LAST MODIFIED' > dateofOLDadd.txt

fc /LB1 dateofNEWadd.txt dateofOLDadd.txt

if errorlevel 1 echo "fc err not 0" 

del dateof*
'get'的

属性可能是......

Access Rights,
Caption,
Class Name,
Compressed,
Compression Method,
Computer System Class Name,
Computer System Name,
Creation Date,
Current File Open Count,
Description,
Drive,
Eight Dot Three File Name,
Encrypted,
Encryption Method,
File Extension,
File Name,
File System Class Name,
File System Name,
File Type,
Hidden,
Install Date,
Last Accessed,
Last Modified,
Manufacturer,
Name,
Path,
Readable,
Should Be Archived,
Size,
Status,
System File,
Version,
Writeable