Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как сравнить "дата+время" двух файлов?

Ответить
Настройки темы
CMD/BAT - [решено] Как сравнить "дата+время" двух файлов?

Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Необходимо в батнике сравнить "дату+время" изменения файлов так, чтобы, если у первого окажется меньше, то заменить (скопировать с заменой) 2-м файлом. Имена у файлов одинаковые естественно. Подскажите, пожалуйста.

Отправлено: 17:15, 11-12-2010

 

Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
set "NewFile=pathfile"
set "OldFile=pathfile"
xcopy /d /q /y "%NewFile%" "%OldFile%"
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:00, 12-12-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всё так просто! И чего сам не догадался? Спасибо!

Отправлено: 13:04, 12-12-2010 | #3


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


А есть ли простой способ именно узнать, какой из файлов новее?

Отправлено: 10:13, 07-10-2011 | #4


Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Цитата Busla:
А есть ли простой способ именно узнать, какой из файлов новее? »
Из 2-х? Я такие пути увидал:
Код: Выделить весь код
set "OneFile=file1"
set "TwoFile=file2"

call:CompareDate "%OneFile%" "%TwoFile%" & goto next

:CompareDate
set "d1=%~t1"
set "d1=%d1:~6,4%%d1:~3,2%%d1:~0,2%%d1:~-5,2%.%d1:~-2%"
set "d2=%~t2"
set "d2=%d2:~6,4%%d2:~3,2%%d2:~0,2%%d2:~-5,2%.%d2:~-2%"
if %d1% gtr %d2% (echo %OneFile%) else echo %TwoFile%
:next
Или так еще можно (не зависит от нац. настроек):
Код: Выделить весь код
setlocal enabledelayedexpansion

set "OneFile=file1"
set "TwoFile=file2"

for /f "skip=1 tokens=1 delims=." %%a in (
   'wmic datafile where "name="%OneFile:\=\\%" or name="%TwoFile:\=\\%"" get lastmodified'
   ) do set "d1=!d2!" & set "d2=%%a"

if %d1:~0,10%.%d1:~-4% gtr %d2:~0,10%.%d2:~-4% (echo %OneFile%) else echo %TwoFile%

Отправлено: 14:00, 07-10-2011 | #5


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата Busla:
А есть ли простой способ именно узнать, какой из файлов новее? »
Еще вариант:
Код: Выделить весь код
@Echo Off
Dir /TW /B /A-D "Filename1" "Filename2" ... "FilenameN"|FindStr /N $|FindStr ^^1:
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:25, 07-10-2011 | #6


Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


El Sanchez, я такой вариант рассматривал самым первым, но, к сожалению, был вынужден отказаться от него. Дело в том, что если файлы расположены в разных папках, то он даст неверную картину.
Сортировка по дате к каждому такому файлу идет независимо. Он единственный обрабатывается в папке и под первым номером всегда будет "Filename1".
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:04, 07-10-2011 | #7


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


SendMessage, спасибо, все правильно. Будем считать, что мой вариант годится для файлов из одной директории.

Отправлено: 20:49, 07-10-2011 | #8


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
call :new Filename1 Filename2
call :new Filename2 Filename1
goto :eof

:new
echo:n|xcopy %1 %2 /dl|findstr ?>nul&&echo:%1 новее %2
goto :eof
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:12, 07-10-2011 | #9


Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


kiripanda, надо же - я тоже в конце концов додумался до такого варианта. Но только сегодня.
читать дальше »
Код: Выделить весь код
@echo off

set "File1=file1"
set "File2=file2"

echo N | xcopy "%File1%" "%File2%" /d/p | find /i "y">nul && echo %File1% || echo %File2%
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:47, 08-10-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как сравнить "дата+время" двух файлов?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Конкурс - Компонент панели управления "Дата и время" в Windows 7 OSZone Microsoft Windows 7 0 24-12-2009 17:30
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? verdix Microsoft Windows 2000/XP 3 03-10-2009 23:46
Создание "Прогресса" на время работы "InetGetSize" sashadeg AutoIt 24 30-09-2009 15:26
CMD/BAT - [решено] Сравнение двух файлов>ветвление "fc" или "diff" dARKest Скриптовые языки администрирования Windows 4 06-07-2009 23:02




 
Переход