批量检查并显示特定文件的最后更改时间

时间:2014-01-31 09:29:37

标签: batch-file

我想要一个检查并显示文件是否以及何时更改的批次。

如果今天C:\ temp \ test \ TEST.LOG已更改(检查日),则显示/回显更改时间。 (例如:“文件已更改16:55 ”)

如果今天Not C:\ temp \ test \ TEST.LOG已更改(检查日),则显示/ echo“文件今天尚未更改

2 个答案:

答案 0 :(得分:1)

最简单的方法是启动PowerShell,它具有更强大的日期操作功能和文件查询功能。您可以从批处理文件中运行它,如下所示:

powershell -ExecutionPolicy Bypass -Command "& { if ($(Get-Item c:\temp\test\test.log).LastWriteTime-gt [DateTime]::Today) { Write-Host "File Changed at $(Get-Item c:\temp\test\test.log).LastWriteTime" } else { Write-Host "File not changed" }}"

这是powershell命令格式更好,为了您的理解

if ($(Get-Item c:\temp\test\test.log).LastWriteTime-gt [DateTime]::Today) {
    Write-Host "File Changed at $(Get-Item c:\temp\test\test.log).LastWriteTime"
}
else {
    Write-Host "File not changed" 
}

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
SET "targetfile=c:\temp\test\test.log"
IF NOT EXIST %targetfile% ECHO %targetfile% does NOT exist&GOTO :eof
FOR %%a IN ("%targetfile%") DO FOR /f "tokens=1*delims= " %%b IN ('ECHO %%~ta') DO IF "%date%"=="%%b" (
 ECHO File changed %%c
) ELSE ECHO File has NOT been changed today
GOTO :EOF

这应该有效。根据您的日期/时间设置,您可能需要勾选tokens=delims

只需找到目标的日期/时间,将其分为%%b中的日期部分和%%c中的时间。将%%b与当前日期进行比较;如果相同,它今天已被更改,所以从%%c显示文件的日期,否则,今天它没有被更改。