![]() |
Копирование новых файлов каждые 30 минут.
Знатоки, приветствую.
Помогите пожалуйста реализовать задачу. Есть два каталога: "Cat-1" "Cat-2" В каталог "Cat-1", каждые 5 минут сваливаются всякие разные непонятные файлы. Задача в том, чтобы написать скрипт, который я буду запускать в шедулере каждые 30 минут. Сам скрипт должен искать в каталоге "Cat-1" файлы, начинающиеся с Английской буквы I, с любым расширением, которые свалились в данный каталог с момента последнего запуска скрипта (30 минут) и копировать (не перемещать) все подходящие под правило файлы в каталог "Cat-2". Каталог "Cat-1" всегда пухнет новыми файлами, заменяемых файлов нет, дата создания всегда соответствует фактическому времени падения файла в каталог "Cat-1". Помогите плиз с написанием скрипта. Всем неравнодушным - огромный кармаплюс!!! |
Цитата:
xcopy c:\cat-1\i*.* c:\cat-2 /d /y |
Цитата:
А как в таком случае скрипт будет понимать какие файлы я скопировал часом ранее? Допустим: в 11:55 в папке лежат файлы 1, 2, 3 и 4. В 12:00 я запускаю скрипт и копирую файлы в "Cat-2". За полчаса с 12:00 до 12:29:59 в папку свалились ещё файлы 5,6,7 и 8. В 12:30 я запускаю скрипт вновь, теперь надо чтобы он понял что файлы за ПОЗАпрошлый промежуток времени (с 11:30 до 11:59:59) копировать не надо, а надо копировать файлы только за ПРОШЛЫЙ промежуток времени с 12:00 до 12:29:59. Спасибо! |
Цитата:
|
Цитата:
В текущем вопросе требуется решение, которое будет опираться именно на временной отрезок 30 минут, а остальные файлы не трогать. Ещё раз большое Вам спасибо! |
Цитата:
|
Цитата:
|
Цитата:
@echo off set otkuda="\\10.0.2.10\smbd\__WorkeInfo\NRD_GATE\INBOX" set kuda="C:\gera-cmd\test\" xcopy %otkuda%\I*.* %kuda% /d /y Ничего не копируется. А если делаю так: @echo off set otkuda="\\10.0.2.10\smbd\__WorkeInfo\NRD_GATE\INBOX" set kuda="C:\gera-cmd\test\" xcopy %otkuda%\I*.* %kuda% /d /y /e То копируются все папки и файлы, а не только начинающиеся с буквы I. |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
@echo off set otkuda="\\10.0.2.10\smbd\__WorkeInfo\NRD_GATE\INBOX" set kuda="C:\gera-cmd\test" robocopy /dcopy:t /e /xo %otkuda% %kuda% i*.* |
Цитата:
|
Цитата:
|
Цитата:
Представим схему: Уровень 1 - это корневой каталог INBOX Уровень 2 - это подкаталоги (именно их название мы вылавливаем и копируем только те что начинаются с буквы I Уровень 3 - файлы внутри подкаталогов Так что он делает, он ищет файлы с названиями начинающимися на букву I на третьем уровне и если нет соответствий то просто копирует каталог второго уровня пустым. В итоге у меня получается что он сейчас копирует просто пустые подкаталоги второго уровня и из общего объёма информации в 250 мегабайт, копируется только 3 мегабайта инфы :), остальное пустые каталоги второго уровня. Получаемся, что он ищет заданное соответствие имени не на втором уровне а на третьем. В этом ошибка. Спасибо! |
Цитата:
|
Цитата:
|
Цитата:
SETLOCAL EnableDelayedExpansion set otkuda="C:\gera-cmd\test2" set kuda="C:\gera-cmd\test" for /f %%i in ('dir /b/s/ad %otkuda% ^| findstr /i "I*"') do ( set "d=%%i" xcopy /q/s/y/r/h "!d!" "!d:%otkuda%=%kuda%!\" ) xcopy /q/s/y/r/h "%otkuda%\I*" "%kuda%" pause Теперь он копирует каталоги начинающиеся с буквы I, но, зараза, копирует ещё и другие каталоги в которых есть файлы с буквой i, а мне нужно смотреть только на имена каталогов, а что внутри без разницы :( Честно говоря, я в FOR вообще не понимаю. Попробовал убрать ключ /i у findstr, без полезно, хоть файлики третьего уровня и написаны с маленькими i , всё равно он их как-то цепляет даже без ключа /i. А папки на втором уровне всегда написаны с большой буквы I, так всегда и будет. |
если есть каталог, имя которого соответствует маске - его нужно скопировать полностью, не взирая на содержимое
Код:
@Echo Off |
megaloman,
Спасибо большое! Так всё работает :-) |
Время: 07:41. |
Время: 07:41.
© OSzone.net 2001-