根据批处理文件中的时间查找文件

时间:2012-01-19 20:40:05

标签: batch-file

我们想知道自上次脚本运行以来Windows系统上的文件是否已被修改。在Unix中我们可以这样做:

 if [ "$file" -nt "$touch" ]
 then
      echo "$file has been changed!"
      touch "$touch"
 fi

我需要使用Windows批处理脚本执行相同的操作。不,我不能使用Perl,Python,Ruby,Cygwin或PowerShell。它们在此特定服务器上不可用。实际上,我无法访问此服务器。我想创建一个批处理脚本并让其他人安装它并希望它可以工作。

是的,工作每天都变得更有趣和乐趣!

1 个答案:

答案 0 :(得分:2)

只要批处理脚本和测试文件位于同一目录中且批处理脚本不是只读的,这就应该有效。如果通过将多个文件名附加到file变量并将空格作为分隔符来更新许多文件中的任何一个,则可以对其进行调整。

@echo off
setlocal
set file="test.txt"

pushd %~dp0
for /f %%F in ('dir /b /o-d "%~nx0" %file%') do (
  if "%%~F" neq "%~nx0" (
    echo %file% has changed
    rem Below is weird syntax for updating timestamp of this batch script
    copy "%~nx0"+,, >nul
  )
  goto :continue
)
:continue
popd