Последнее изменение файла пакетного копирования Windows - PullRequest
1 голос
/ 22 сентября 2011

Я пытаюсь написать быстрый пакетный скрипт для просмотра даты последнего изменения одного файла и сравнения его с датой последнего изменения нескольких других, и если она больше, чем у других lastmods, она копирует файлы в эти каталоги. Это то, что я до сих пор:

@echo off
for %%a in ([srcFile]) do set lastmodSrc=%%~ta
echo lastmodSrc
for %%a in ([dstFile1]) do set lastmodDst1=%%~ta
for %%a in ([dstFile2]) do set lastmodDst2=%%~ta
for %%a in ([dstFile3]) do set lastmodDst3=%%~ta
for %%a in ([dstFile4]) do set lastmodDst4=%%~ta

if lastmodSrc GTR lastmodDst1 xcopy [srcFile] [dstDir1] /-y
if lastmodSrc GTR lastmodDst2 xcopy [srcFile] [dstDir2] /-y
if lastmodSrc GTR lastmodDst3 xcopy [srcFile] [dstDir3] /-y
if lastmodSrc GTR lastmodDst4 xcopy [srcFile] [dstDir4] /-y

pause

В квадратных скобках указаны полные пути. Что он делает сейчас, так это сохраняет lastmodSrc и lastmodDst как строки (по крайней мере, похоже, это то, что он делает), и поэтому он фактически не проверяет даты модов. Я ужасно неадекватен в пакетных сценариях в Windows, подумал, что кто-то здесь может помочь. Заранее спасибо!

1 Ответ

1 голос
/ 22 сентября 2011

Другим подходом, который может быть проще (при условии, что я понимаю цель), будет использование опции /d в xcopy. Если это указано (без даты), он будет копировать файл, только если источник более новый:

xcopy /d srcfile dstfile
...