如何在批处理文件中回显上次修改时间的文件?

时间:2017-07-11 12:00:05

标签: batch-file

如果今天修改了文件,我有这个代码回声。 我如何添加,以便它不仅可以回应文件今天被修改,还可以在什么时间进行修改?

例如“今天在%modifytime%修改的文件”。

@echo off
for %%F in (C:\temp\file.txt) do (for /F %%D in ("%%~tF") do (set mdate=%%D))
for /F "tokens=2" %%D in ('date/t') do set cdate=%%D
if "%date%"=="%mdate%" echo File modified today
if not "%date%"=="%mdate%" echo File not modified today

1 个答案:

答案 0 :(得分:1)

使用内置的 ForFiles 命令可以快速了解一下:

@Echo Off
For %%A In ("C:\temp\file.txt") Do (If Not "%__CD__%"=="%%~dpA" PushD "%%~dpA"
    ForFiles /M "%%~nxA" /D 0 /C^
    "Cmd /C Echo @File was modified today0x09@fDate @fTime"2>Nul||(
    Echo "%%A" not modified today))
Pause

与您的示例一样,这个想法允许您用第3行替换括号中的单个文件:

  • * 输出当前目录中的每个文件。
  • "C:\temp\file1.txt" "C:\somewhere\fileZ.exe" 输出多个已知文件。
    特别注意:使用 PushD 而不是< strong> PopD 可能会限制不同目录的数量;如果使用此选项,请谨慎使用。

为安全起见,我建议您在这些括号中加注双引号。