Поиск файла по времени в командном файле - PullRequest
2 голосов
/ 20 января 2012

Мы хотим выяснить, был ли файл в системе Windows изменен с момента последнего запуска нашего скрипта. В Unix мы можем сделать это:

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

Мне нужно сделать то же самое с пакетным скриптом Windows. Нет, я не могу использовать Perl, Python, Ruby, Cygwin или PowerShell. Они не доступны на этом конкретном сервере. На самом деле у меня нет доступа к этому серверу. Я предполагаю создать пакетный сценарий и попросить кого-то еще установить его и надеюсь, что он работает.

Да, работа с каждым днем ​​становится все веселее и веселее!

1 Ответ

2 голосов
/ 20 января 2012

Это должно работать, пока пакетный сценарий и тестовый файл находятся в одном каталоге, а пакетный сценарий не только для чтения. Его можно настроить на отключение, если какой-либо из многих файлов был обновлен путем добавления нескольких имен файлов в переменную 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...