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

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

Ответить
Настройки темы
CMD/BAT - [решено] Копирование новых файлов каждые 30 минут.

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


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

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


Знатоки, приветствую.
Помогите пожалуйста реализовать задачу.
Есть два каталога:
"Cat-1"
"Cat-2"
В каталог "Cat-1", каждые 5 минут сваливаются всякие разные непонятные файлы. Задача в том, чтобы написать скрипт, который я буду запускать в шедулере каждые 30 минут.
Сам скрипт должен искать в каталоге "Cat-1" файлы, начинающиеся с Английской буквы I, с любым расширением, которые свалились в данный каталог с момента последнего запуска скрипта (30 минут) и копировать (не перемещать) все подходящие под правило файлы в каталог "Cat-2".
Каталог "Cat-1" всегда пухнет новыми файлами, заменяемых файлов нет, дата создания всегда соответствует фактическому времени падения файла в каталог "Cat-1".
Помогите плиз с написанием скрипта.
Всем неравнодушным - огромный кармаплюс!!!

Отправлено: 19:22, 21-11-2016

 

Ветеран


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

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


Цитата POSTREALITY:
более 20 тестовых папок »
Для вложенных каталогов нужно запускать: xcopy %otkuda%\I*.* %kuda% /d /y /e - в задаче речь шла лишь об одном каталоге без рекурсии.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:42, 22-11-2016 | #11



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

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


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


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

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


Цитата raddy:
Для вложенных каталогов нужно запускать: xcopy %otkuda%\I*.* %kuda% /d /y /e - в задаче речь шла лишь об одном каталоге без рекурсии. »
Всё верно, только он почему-то копирует всё подряд, а не только то что начинается с буквы I.

Отправлено: 14:04, 22-11-2016 | #12


Ветеран


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

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


Цитата POSTREALITY:
Всё верно, только он почему-то копирует всё подряд, а не только то что начинается с буквы 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*.*

Последний раз редактировалось raddy, 22-11-2016 в 14:49.


Отправлено: 14:33, 22-11-2016 | #13


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


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

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


Цитата raddy:
тогда так можно сделать (выделенное изменено): »
Странно, не понимаю, но он всё равно копирует всё подряд, сливает полностью весь каталог капля в каплю.

Отправлено: 15:22, 22-11-2016 | #14


Ветеран


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

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


Цитата POSTREALITY:
сливает полностью весь каталог капля в каплю. »
А время/дата файлов в каталоге назначения совпадает с источником, или текущая?

Отправлено: 15:24, 22-11-2016 | #15


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


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

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


Цитата raddy:
А время/дата файлов в каталоге назначения совпадает с источником, или текущая? »
Тут вообще странное дело. Проверил все каталоги внутри корневого каталога INBOX.
Представим схему:
Уровень 1 - это корневой каталог INBOX
Уровень 2 - это подкаталоги (именно их название мы вылавливаем и копируем только те что начинаются с буквы I
Уровень 3 - файлы внутри подкаталогов
Так что он делает, он ищет файлы с названиями начинающимися на букву I на третьем уровне и если нет соответствий то просто копирует каталог второго уровня пустым.
В итоге у меня получается что он сейчас копирует просто пустые подкаталоги второго уровня и из общего объёма информации в 250 мегабайт, копируется только 3 мегабайта инфы , остальное пустые каталоги второго уровня. Получаемся, что он ищет заданное соответствие имени не на втором уровне а на третьем. В этом ошибка.
Спасибо!

Отправлено: 15:46, 22-11-2016 | #16


Ветеран


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

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


Цитата POSTREALITY:
Получаемся, что он ищет заданное соответствие имени не на втором уровне а на третьем. В этом ошибка. »
То есть получается, если есть каталог, имя которого начинается с буквы I - его нужно скопировать полностью, не взирая на содержимое?

Отправлено: 16:00, 22-11-2016 | #17


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


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

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


Цитата raddy:
То есть получается, если есть каталог, имя которого начинается с буквы I - его нужно скопировать полностью, не взирая на содержимое? »
Ага, точно, даже если он пустой, всё равно копируем.

Отправлено: 16:05, 22-11-2016 | #18


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


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

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


Цитата raddy:
То есть получается, если есть каталог, имя которого начинается с буквы I - его нужно скопировать полностью, не взирая на содержимое? »
Вот что-то похожее, но не могу понять где ошибка:

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, так всегда и будет.

Последний раз редактировалось POSTREALITY, 22-11-2016 в 19:37.


Отправлено: 19:30, 22-11-2016 | #19


Ветеран


Contributor


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

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


если есть каталог, имя которого соответствует маске - его нужно скопировать полностью, не взирая на содержимое
Код: Выделить весь код
@Echo Off

Set "From=C:\gera-cmd\test2"
Set "To=C:\gera-cmd\test"
Set "Maska=I*.*"

SetLocal EnableExtensions EnableDelayedExpansion

For /F "usebackq delims=" %%d IN (`dir "%From%\%Maska%" /B /S /A:D 2^>nul`) DO (
	Set "DCopy=%%d"
	Xcopy /Q /E /Y /D /R /H "%%d\*.*" "!DCopy:%From%=%To%!\" >nul
)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 22-11-2016 в 22:06.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:58, 22-11-2016 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Хочу сделать что бы ccleaner чистил каждые 30 минут pizdelix@vk Скриптовые языки администрирования Windows 0 31-12-2014 15:45
Компьютер выключается через каждые 30 -60 минут , один развылетел синий экран morozkos@vk Непонятные проблемы с Железом 2 11-10-2014 20:19
Интернет - после первого посещения сайта однокласники комп перезагружается через каждые 30 минут sergiy Microsoft Windows 2000/XP 3 31-12-2009 11:54
Прочее - NVIDIA nForce Networking Controller <разрыв соединения каждые 30 минут> zzzsergzzz Сетевое оборудование 3 22-01-2009 20:47
Обнуляется каждые 10-30 минут Access this computer from the network Maf1a Microsoft Windows NT/2000/2003 5 15-08-2007 01:34




 
Переход