|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Параллельное копирование файлов в bat. |
|
CMD/BAT - Параллельное копирование файлов в bat.
|
Новый участник Сообщения: 10 |
Привет всем.
Такой вопрос возник. Есть два диапазона значений, постоянно вырастающих на единицу. Одно лежит в одном диапазоне (допустим 1-10), другое (15-25). Нужно создавать папки именованные значением переменной диапазона. Т.е. папки 1\ 2\ 3\ 4\ 5\ 6\ и т.д. В эти папки нужно копировать один и тот-же файл. Нужно написать такой батник, чтобы копирование происходило параллельно. Т.е. одновременно идёт создание папки допустим 1 и папки 15. Проблема в том, что у меня постоянно выходит последовательное копирование при помощи for. Код набросал, но так и не додумался как сделать параллельное копирование. + перед каждым копированием, нужно пинговать удаленный сервер (на самом деле 1,2,3 это цифры в IP, но не суть). |
|
Отправлено: 06:33, 12-01-2014 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать В общем попробЫвал все и все-равно возникают проблемы.
Нужно чтобы при отсутствии пинга выводилось сообщение об ошибке, а если связи нет, то и не должно быть копирования. Для этого мне нужно объеденить проверку пинга в одну функцию, но этого не сделать. В итоге сделал так, нормально не работает test.cmd Цитата:
Цитата:
|
||
Последний раз редактировалось Dremor, 12-01-2014 в 18:15. Отправлено: 18:06, 12-01-2014 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1758
|
Dremor, У меня такой вариант работает:
@echo off setlocal set "exec=xcopy %computername%.txt D:\Downloads\%%%i.ru\" set "error=echo wrong host %%%i.ru" for %%i in (ya,щщ,юю) do start /b cmd /c "1>nul 2>&1 ping -n 1 %%i.ru && (%exec%) || (%error%) @echo off setlocal set "exec=xcopy %computername%.txt testfolder\192.168.%%%i.1\" set "error=echo wrong ip 192.168.%%%i.1" for /l %%i in (%1,1,%2) do start /b cmd /c "1>nul 2>&1 ping -n 1 192.168.%%i.1 && (%exec%) || (%error%) |
Отправлено: 19:25, 12-01-2014 | #12 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Исправил проверку пинга и вроде заработало, пока ещё решаю остальные вопросы
![]() Ложная тревога, теперь с такой проверкой пинга в любом случае выдаёт ошибку wrong ip, хотя пингую локальный 192.168.1.1 ![]() В случае же отсутствия строчки Цитата:
Файлы тоже копируются. Хотя проверил сам, все айпишники не пингуются. Разберусь - отпишусь, похоже ковычки где-то пропустил. |
|
Последний раз редактировалось Dremor, 12-01-2014 в 20:04. Отправлено: 19:54, 12-01-2014 | #13 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Теперь возникла еще проблема:
Мы количество отчетов об ошибках урезали, а нужно чтобы выдавались также ошибки о том, что файл не может быть копирован. Т.е. на пинг проверили, а потом ещё на само копирование. Да, ещё непонятно как вывести сообщения об ошибках в главное окно. Или сделать так, чтобы работало только одно окно. (Встаёт проблема параллельности копирования) |
Отправлено: 20:12, 12-01-2014 | #14 |
Ветеран Сообщения: 1758
|
Dremor, Если не секрет, зачем эта параллельность? Просто возникают затруднения в написании, а выигрыш во времени скорее всего сомнительный. Убрать все эти start cmd и ничего не потеряешь. Файлы текстовые, так ведь, если тяжелые, то хотя бы запускать только xcopy.exe в нескольких экземплярах:
|
Отправлено: 20:40, 12-01-2014 | #15 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Это мне так задали сделать, зачем я сам не понимаю.
Последовательно я давно все написал. Вообще мне легче это всё в С++ сделать, чем париться с гениальной cmd, но надо значит надо ![]() Спасибо за пример, я также сделал. От этих скобочек уже голова болит. Я уже по сути все сделал, осталось последнее условие. Как сделать вывод в run.bat, когда start.cmd Отработали? Т.е. операция прошла и мне нужно сделать вывод о том, что батник работу завершил и какой результат (ну тут понятно, еррорлевел наверное проще сделать). |
Отправлено: 20:44, 12-01-2014 | #16 |
Ветеран Сообщения: 1758
|
Цитата Dremor:
|
|
Отправлено: 21:00, 12-01-2014 | #17 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Ох уж эти батники, я за день общения с ними (до этого вообще 0 знал по ним) свихнулся просто напросто.
Лучше бы был встроенный компилятор многих языков, написал код и всё. Спасибо за помощь Foreigner, очень помог. |
Отправлено: 21:07, 12-01-2014 | #18 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Foreigner:
![]() Dremor, Да и run.bat лучше бы переобозвать (поскольку имя программ run.exe, как и launch.exe, тоже периодически попадается, и обработка может уйти к таким программам). |
|
------- Отправлено: 23:06, 12-01-2014 | #19 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|