Batch file 批处理以检查和显示特定文件的上次更改时间

Batch file 批处理以检查和显示特定文件的上次更改时间,batch-file,Batch File,我想一批检查和显示,如果和当一个文件被更改 如果C:\temp\test\test.LOG今天(检查当天)已更改,则显示/回显更改时间。(例如:“文件更改为16:55”) 如果C:\temp\test\test.LOG今天(检查当天)已更改,则显示/echo“文件今天未更改”最简单的方法是启动PowerShell,它具有更强大的日期时间操作和文件查询功能。您可以从批处理文件运行此操作,如下所示: powershell -ExecutionPolicy Bypass -Command "&

我想一批检查和显示,如果和当一个文件被更改

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


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

最简单的方法是启动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" 
}
@ECHO关闭
SETLOCAL
设置“targetfile=c:\temp\test\test.log”
如果不存在%targetfile%ECHO%targetfile%不存在&转到:eof
对于(“%targetfile%”)中的%%a,代币=1*delims=“%%b IN('ECHO%%~ta')如果“%date%”==“%%b”,则执行(
回声文件已更改%%c
)ELSE ECHO文件今天未更改
后藤:EOF
这应该行得通。根据您的日期/时间设置,您可能需要挠痒
标记=
delims


简单地说,找到目标的日期/时间,将其拆分为
%%b
中的日期部分和
%%c
中的时间部分。将
%%b
与当前日期进行比较;如果相同,则它今天已更改,因此显示文件的日期从
%%c
开始,否则,它今天未更改。

您能否发布必须在其上运行的最早版本的Windows?我发布了PowerShell建议,但这仅在Windows 2000及更高版本的内存中起作用。如果日志文件已创建,而不是已更改/更新,则您的代码可以工作,但似乎只显示“文件已更改…”。test.log不是每天创建的,它会用更多数据更新。抱歉-应该是
LastWriteTime
而不是
CreationTime
。我误解了这个问题。