Вопросик:
1. Есть пара каталогов, надо из одного скопировать в другой новые файлы.
Но не "измененные", а именно только новые,
т.е. чтобы не было правок файлов "задним числом" ...
Т.е. если файл уже во 2-м каталоге существует, то его не перезаписывать.
===
2. вариант с xcopy /u - только "обратный"
/U Копирует только файлы, которые уже существуют в конечной папке.
К сожалению, обратный, типа /y и /-y с /-u - не проходит (нэт такого ключика).
И в большинстве программок - такой фишки не встречал.
===
3. Варианты с копированием только файлов с атрибутом "Архив" и сбросом атрибута - после копирования - не годится, т.к. MS Office (Word, Excel) после модификации,
или просто после сохранения (даже без изменения данных) - ставять атрибут "А".
===
4. Вариант с датами файлов - запрет на копирование по "старости" - 1 день:
NTFS хранит и MS MS Office корректно ставит дату на файлы, например,
проводник, правая кнопки мыши, свойства:
- файл создан (одна дата - 13.11.2007)
- файл изменен (другая дата - 19.11.2007)
Но, стандартные консольные утилитки copy и xcopy
считают дату изменения - датой файла,
может быть из-за того, что MS Office (Word, Excel) оченть интересно изменяют файлы:
- сначала создают временную копию,
- затем удаляют оригинал,
- и временную копию (измененную) переименовывают вместо оригинального файла.
===
5. вариант который работает - с RAR:
ключ -O- — пропускать существующие файлы
Разрешает пропускать существующие файлы без выдачи запросов пользователю.
Т.е. вариант "немного" "не правильный"
- сначала создается RAR архив с ключем -o-
- затем тут же разархивируется в целевую папку
т.к. нужен не архив, а именно "живые" файлы.
***
Не подскажите вариант со скриптами или готовую программку (которая "умеет" так работать) ?
===
Наверное,
- сначала "dir" одной папки (dir /a-d /b);
- затем "dir" целевой папки (dir /a-d /b);
- сравнение;
- копирование не достающих файлов в целевую.
***
P.S.
Спасибо за подсказку (см. следующий пост) - robocopy /XN
делает то, что надо (копирует только новые файлы, без измененных).
И, : по ссылке в шапке
http://www.rsdn.ru/article/winshell/batanyca.xml Код: for /d %%i in ("%%~si") do (
set SHORT=%%~si
)
echo %SHORT%