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

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

Ответить
Настройки темы
CMD/BAT - Батник копирующий и перемещающий файлы по маске в заданные каталоги

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


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

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


Доброго времени суток!
С написанием батников знаком, но не очень силен
Есть батник написанный мной:

@Echo On

setlocal enableextensions enabledelayedexpansion

cls

path c:\windows\system32

Set sourcedir=e:\Rabota\GNI\OUT\
Set sourcedir1=e:\Rabota\GNI\OUT\A\
Set sourcedir2=e:\Rabota\GNI\OUT\AN\
Set sourcedir3=e:\Rabota\GNI\OUT\BN\
Set sourcedir_arh=e:\Rabota\GNI\OUT\Arhiv\
Set destdir1=d:\Rabota\GNI_Test\ARHIV\
Set destdir2=e:\Rabota\GNI\ARHIV\
Set log=d:\Rabota\GNI_Test\Log\
Set files1=SBC*.txt
Set files2=SBC*.xml
Set files3=SFC*.xml

for /f "tokens=1-3*" %%a in ('dir "%sourcedir%%files1%" /b /s /a-d') do (
if %%a==%files1% Exist (
if not exist "%destdir1%%Date%\ES\A" md "%destdir1%%Date%\ES\A"
if not exist "%destdir2%%Date%\ES\A" md "%destdir2%%Date%\ES\A"
if not exist "%sourcedir_arh%%Date%\ES\A" md "%sourcedir_arh%%Date%\ES\A"
xcopy %%a %destdir1%%Date%\ES\A\ /H /Y /C /R /S /Z /EXCLUDE:d:\Rabota\GNI_test\listnotcopy.txt
xcopy %%a %destdir2%%Date%\ES\A\ /H /Y /C /R /S /Z /EXCLUDE:d:\Rabota\GNI_test\listnotcopy.txt >> %log%log_%date%.txt
Date /t >> %log%log_%date%.txt
Time /t >> %log%log_%date%.txt )
move %sourcedir1%%files1% "%sourcedir_arh%"%Date%\ES\A\ >> %log%log_%date%.txt
Date /t >> %log%log_%date%.txt
Time /t >> %log%log_%date%.txt
) else (
for /f "tokens=1-3*" %%b in ('dir "%sourcedir%%files2%" /b /s /a-d') do (
if %%b==%files2% Exist (
if not exist "%destdir1%%Date%\ES\AN" md "%destdir1%%Date%\ES\AN"
if not exist "%destdir2%%Date%\ES\AN" md "%destdir2%%Date%\ES\AN"
if not exist "%sourcedir_arh%%Date%\ES\AN" md "%sourcedir_arh%%Date%\ES\AN"
xcopy %%b %destdir1%%Date%\ES\AN\ /H /Y /C /R /S /Z /EXCLUDE:d:\Rabota\GNI_test\listnotcopy.txt
xcopy %%b %destdir2%%Date%\ES\AN\ /H /Y /C /R /S /Z /EXCLUDE:d:\Rabota\GNI_test\listnotcopy.txt >> %log%log_%date%.txt
Date /t >> %log%log_%date%.txt
Time /t >> %log%log_%date%.txt )
move %sourcedir2%%files2% "%sourcedir_arh%"%Date%\ES\AN\ >> %log%log_%date%.txt
Date /t >> %log%log_%date%.txt
Time /t >> %log%log_%date%.txt
) else (
for /f "tokens=1-3*" %%c in ('dir "%sourcedir%%files3%" /b /s /a-d') do (
if %%c==%files3% Exist (
if not exist "%destdir1%%Date%\ES\BN" md "%destdir1%%Date%\ES\BN"
if not exist "%destdir2%%Date%\ES\BN" md "%destdir2%%Date%\ES\BN"
if not exist "%sourcedir_arh%%Date%\ES\BN" md "%sourcedir_arh%%Date%\ES\BN"
xcopy %%c %destdir1%%Date%\ES\BN\ /H /Y /C /R /S /Z /EXCLUDE:d:\Rabota\GNI_test\listnotcopy.txt
xcopy %%c %destdir2%%Date%\ES\BN\ /H /Y /C /R /S /Z /EXCLUDE:d:\Rabota\GNI_test\listnotcopy.txt >> %log%log_%date%.txt
Date /t >> %log%log_%date%.txt
Time /t >> %log%log_%date%.txt )
move %sourcedir3%%files3% "%sourcedir_arh%"%Date%\ES\BN\ >> %log%log_%date%.txt
Date /t >> %log%log_%date%.txt
Time /t >> %log%log_%date%.txt
)

if not exist "%destdir1%%Date%\TF" md "%destdir1%%Date%\TF" >> %log%log_%date%.txt
Date /t >> %log%log_%date%.txt
Time /t >> %log%log_%date%.txt

Он просматривает каталог с подкаталогами на наличие файлов и копирует/перемещает файлы с определенной маской в определенный подкаталог.
Т.е. производит разбор файлов по каталогам.
Помогите пожалуйста исправить или дописать его так, чтобы батник сканировал все файлы в каталоге с масками (не зависимо от подкаталога где этот файл лежит) и
сортировал их (копировал/перемещал) в другое место в определенные подкаталоги. Так же хотелось бы ускорить работу этого батника.

Отправлено: 22:47, 06-08-2014

 

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


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

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


Всем доброго времени суток!
Благодарю всех за помощь!!!
И megaloman и umagonj предложили не плохие варианты.
Свою задачу я попытался описать в сообщении:
Цитата KamikadZZe:
Задание такого рода:
Допустим есть файлы: SBCXXXXXXX_XXXXXXXXXX_XXXXXXXXXX_XXX.txt, SBCXXXXXXX_XXXXXXXXXX_XXXXXXXXXX_XXX.xml, SBFXXXXXXX_XXXXXXXXXX_XXXXXXXXXX_XXX.xml. Они создаются программой и выкладываются подкаталоги "A", "AN", "BN" в общем каталоге "GNI" на сервере ( в "A"->sbc*.txt и т.д. по порядку) В папке "GNI" на сервере есть еще подкаталог "Arhiv" в который перемещаются скопированные файлы.
Вначале стояла задача копировать эти файлы на 2-а других компа по сети в папку "GNI" сохраняя подкаталоги, а затем перемещать эти файлы в "Arhiv". Чтобы исключить перекопирование подкаталога "Arhiv" в xcopy был добавлен listnotcopy.txt.
В
Код:
if %%a==%files1% Exist (
должно осуществляться сравнение файла по маске и затем, если файл совпадает с маской, т.е. файл в каталоге на сервере SBCXXXXXXX_XXXXXXXXXX_XXXXXXXXXX_XXX.txt совпадает с маской, то создается подкаталог на компах и происходит копирование этого файла в созданый подкаталог. Если файла нет или не совпадает с маской то подкаталог не создается.
На сравнение, копирование файлов по маске в коде приведенном мной уходит не менее 2-х-5 мин, т.к. в подкаталоге "Arhiv" много файлов.
Хотелось бы ускорить этот процесс.
Т.к. не исключено что после обновления программа потеряет пути (случалось такое) и выгрузит файлы в корень "GNI" или что хуже перепутает подкаталоги для выгрузки хотелось бы чтобы код проверял каталог "GNI" вместе с подкаталогами (т.е. "A"-> на наличае файлов по маскам sbc.txt, sbc.xml, sbf.xml,"AN" -> на наличае файлов по маскам sbc.txt, sbc.xml, sbf.xml, "BN"-> на наличае файлов по маскам sbc.txt, sbc.xml, sbf.xml), создавал подкаталоги если имеются файлы совпадающие с маской и копировал их в определенные подкаталоги (т.е. в "A"-> только файлы sbc.txt, "AN" -> только файлы sbc.xml, "BN"-> только файлы sbf.xml ). »
Цитата umagonj:
но самый интересный вопрос - зачем вам и старый и новый метод сообщений в налоговую? разве сейчас все массово не переходят на хмл ? »
Старый формат еще действует, по крайней мере до 10.2014 и с ним тоже работаем.

Буду благодарен, если кто то сможет решить задачу описанную мной. В свою очередь, если что то получится у меня, я не несомненно поделюсь с Вами своим решением!

Отправлено: 20:39, 11-08-2014 | #11



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

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Помогите написать батник, копирующий файлы по дате изменения kirillius Скриптовые языки администрирования Windows 4 22-07-2014 17:31
.NET - Скачать файлы с ftp по маске. Sadhacker Программирование и базы данных 1 20-07-2012 21:23
CMD/BAT - [решено] Нужен батник копирующий текущий ip в буфер обмена Absolutus11 Скриптовые языки администрирования Windows 2 23-04-2012 15:22
CMD/BAT - [решено] Батник копирующий из папок в сети файлы в одну Nenomernoj Скриптовые языки администрирования Windows 11 16-01-2012 18:23
Удалить файлы в папке по маске Nealles Программирование и базы данных 4 10-09-2003 23:11




 
Переход