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

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

Ответить
Настройки темы
CMD/BAT - Параллельное копирование файлов в bat.

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


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

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


Привет всем.
Такой вопрос возник.

Есть два диапазона значений, постоянно вырастающих на единицу.
Одно лежит в одном диапазоне (допустим 1-10), другое (15-25).
Нужно создавать папки именованные значением переменной диапазона.
Т.е. папки 1\ 2\ 3\ 4\ 5\ 6\ и т.д.
В эти папки нужно копировать один и тот-же файл.

Нужно написать такой батник, чтобы копирование происходило параллельно.
Т.е. одновременно идёт создание папки допустим 1 и папки 15.

Проблема в том, что у меня постоянно выходит последовательное копирование при помощи for.
Код набросал, но так и не додумался как сделать параллельное копирование.
+ перед каждым копированием, нужно пинговать удаленный сервер (на самом деле 1,2,3 это цифры в IP, но не суть).

Отправлено: 06:33, 12-01-2014

 

Ветеран


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

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


Dremor, Ваши интервалы различны по длине: в одном 10 значений, в другом — 11.

Цитата Dremor:
Нужно написать такой батник, чтобы копирование происходило параллельно.
Т.е. одновременно идёт создание папки допустим 1 и папки 15. »
Почему не «1», «2», «3», … «10», «15», «16», …«25» одновременно?

Цитата Dremor:
(на самом деле 1,2,3 это цифры в IP, но не суть). »
Как раз таки суть. Рассказывайте подробно.

Отправлено: 06:59, 12-01-2014 | #2



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

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

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата Dremor:
Нужно написать такой батник, чтобы копирование происходило параллельно »
В общих чертах: запускать из батника не просто "COPY", а "start cmd /c COPY" (то же -- с MD). Тогда переход к следующей команде исходного батника будет происходить не дожидаясь завершения текущей команды.
Да и слово "параллельно"... Вопрос, что быстрее происходит: исполнение команды -- или синтаксический разбор системой батника и переход к следующей строке.

-------
Mikhail Zhilin

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

Отправлено: 12:31, 12-01-2014 | #3


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


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

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


Цитата:
@echo off

for /L %%i in (11,1,34) do call:pingtest %%i && if %errorlevel%==0 call:copyoper %%i

exit /b 0

setlocal
:pingtest
1>nul 2>&1 ping -n 1 -w 200 192.168.%1.1 && (echo 192.168.%1.1 = OK) || echo No connection with 192.168.%1.1 at %TIME% %DATE% && echo No connection with 192.168.%1.1 at %TIME% %DATE% >> errolog.txt
exit /b
endlocal

setlocal
:copyoper
1>nul 2>&1 md testf\192.168.%1.1 && 1>nul 2>&1 copy %COMPUTERNAME%.txt testf\192.168.%1.1
if %errorlevel%==0 echo File succesfully copied to 192.168.%1.1
endlocal
Вот пример кода батника copy1.bat, который вызывается run.bat
Как можно это реализовать при помощи "start cmd /c COPY" в цикле?

Цитата:
Как раз таки суть. Рассказывайте подробно.
Один и тот-же файл копируется на 192.168.%%i.1. где %%i += 1
Это я реализовал, но последовательно.

Отправлено: 15:01, 12-01-2014 | #4


Ветеран


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

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


Попробуй так:
Код: Выделить весь код
@echo off
setlocal

for /l %%i in (11,1,34) do start /b cmd /c "ping -n 1 192.168.%%i.1 && ( xcopy %computername%.txt testfld\192.168.%%i.1\ )"
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:28, 12-01-2014 | #5


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


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

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


Спасибо, а как теперь организовать параллельную запись?
Т.е. два цикла, один этот (11,1,34), другой (36,1,79)?

Я просто не могу понять, как запустить два цикла параллельно.
Ладно если бы цикл в цикле был, но здесь в теле цикла реализовать это очень трудно.
Я то сделал два батника, copy1.bat и copy2.bat, они одинаковые, просто работают с двумя диапазонами.

Отправлено: 16:03, 12-01-2014 | #6


Ветеран


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

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


Dremor, Просто прописать в run.cmd
Код: Выделить весь код
start copy.cmd 11 34
start copy.cmd 36 79
А в copy.cmd:
Код: Выделить весь код
for /l %%i in (%1,1,%2) do ....
Т.е. получится, что запускается 2 копии copy.cmd c разными аргументами

И лучше copy.cmd назвать как-нибудь иначе, на всякий случай.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:18, 12-01-2014 | #7


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


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

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


Спасибо, сегодня попробую обязательно.

Отправлено: 16:24, 12-01-2014 | #8


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


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

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


Подскажите ещё пожалуйста, как послать вывод c copy.cmd на главное окно?
Т.е. я запустил run.bat, пошла copy.cmd и чтобы все ошибки она выводила в run.bat?

Отправлено: 16:57, 12-01-2014 | #9


Ветеран


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

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


Главное, чтобы размеры копируемого по сети были адекватными. Иначе параллелизация приведёт к противоположному от ожидаемого эффекту.

Отправлено: 17:00, 12-01-2014 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование системных файлов через bat savvato Скриптовые языки администрирования Windows 12 28-03-2019 19:44
CMD/BAT - [решено] Резервное копирование через bat-скрипт. Xsaner Скриптовые языки администрирования Windows 5 25-09-2014 11:44
CMD/BAT - Как настроить последовательный запуск bat-файлов в другом bat. codi28 Скриптовые языки администрирования Windows 12 27-11-2013 18:30
CMD/BAT - Копирование по FTP .bat Vao Скриптовые языки администрирования Windows 0 17-10-2011 10:29
CMD/BAT - [решено] .bat Копирование с условием TwoThrones Скриптовые языки администрирования Windows 1 09-01-2011 14:51




 
Переход