0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 41
1

Последовательный запуск нескольких параллельных bat файлов из bat файла

26.01.2020, 17:25. Показов 21283. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Есть 6 bat файлов. Необходимо запустить 2 последовательных вызова запуска 3 параллельных bat файлов. Есть такая возможность? Я создал 6 bat файлов (1.bat, 2.bat....6.bat). Потом создал еще 2 bat файла, в которых вызываю по 3 bat файлов. То есть cab1 (start 1.bat
start 2.bat
start 3. bat), cab2 (start 4.bat start 5.bat start 6.bat) и создал последний bat файл , в котором вызываю последовательно 2 cab, то есть final.bat (cab1&&cab2). В итоге у меня запускается первая тройка файлов и на этом все. Как можно подобное организовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2020, 17:25
Ответы с готовыми решениями:

Последовательный запуск нескольких BAT-файлов из основного BAT-файла
Доброго времени суток всем... Помогите кто понимает.. Есть bat... @echo off start "" "D:\$\Pale...

Запуск bat-файлов с параметрами, являющимися модификациями принятого запускающим bat-файлом параметра
Написать командный файл, который: • принимает в качестве параметра полное имя файла...

Запуск файла в директории с .bat, когда .bat запущен от имени администратора
Здравствуйте. Имею бат, он должен запускать файл "<тут директория батника>\n1.bat". Но если даже...

Как добавить обработку файлов нескольких определённых типов в код BAT-файла для архивации файлов?
Спасибо большое за полезную информацию! Отличный код. Подскажите как к нему прикрутить обработку...

17
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 41
27.01.2020, 11:05  [ТС] 2
кто нибудь, хелп
0
4335 / 2125 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
27.01.2020, 13:06 3
будет общий последовательный запуск всех по-очереди (2-й этап после паузы) или разбивать на два bat (но и тогда их запуск будет не будет чисто параллельным)
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
call 1.bat
call 2.bat
call 3.bat
pause
call 4.bat
call 5.bat
call 6.bat
pause
каждый вызываемый bat должен иметь последнюю строку: exit /b вместо exit
и сразу вопрос - зачем такое количество отдельных bat, может удобнее с помощью той же call сделать вынос в подпрограммы отдельные операции и делать все в одном bat?

Добавлено через 6 минут
или делать два отдельных bat (ну и запускать их по-очереди - последовательно) с параллельным запуском bat прописанных внутри:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
if "%~1" neq "" (call %*& exit /b)
call :# :#1
call :# :#2
call :# :#3
exit /b
 
:#
 start "" cmd /c "%~f0 %*"
exit /b
 
:#1
 title C1
 start "" 1.bat
exit /b
 
:#2
 title C2
 start "" 2.bat
exit /b
 
:#3
 title C3
 start "" 3.bat
exit /b
и такой же второй, но уже с 4, 5, 6

Добавлено через 2 минуты
ну и для полного извращения делать общий bat с последовательным запуском вышеприведенных двух:
Windows Batch file
1
2
3
4
@echo off
call 123.bat
call 456.bat
pause
Добавлено через 58 секунд
т.е. уже 9-й по счету
0
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 41
27.01.2020, 16:01  [ТС] 4
у меня сейчас вот такие файлы
1 файл - 001.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\001 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\001 /Execute "C:\auto.epf"
2 файл - 002.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\002 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\002 /Execute "C:\auto.epf"
3 файл - 003.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\003 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\003 /Execute "C:\auto.epf"
4 файл - 004.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\004 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\004 /Execute "C:\auto.epf"
5 файл - 005.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\005 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\005 /Execute "C:\auto.epf"
6 файл - 006.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\006 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\006 /Execute "C:\auto.epf"

7 файл - cab0.bat
start 001.bat
start 002.bat
start 003.bat

8 файл - cab1.bat
start 004.bat
start 005.bat
start 006.bat

9 файл update.bat
cab0.bat
cab1.bat

Все 9 файлов я генерю еще одним bat файлом, то есть быстро. Запускаю update.bat, в результате у меня запускаются все 6 сразу, то есть он запускает cab0.bat и тут же понимает что успешно выполнено и запускает следующий cab1. Pause мне не нужны,потому что должно быть автоматом все. exit /b это что такое?
0
4335 / 2125 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
27.01.2020, 17:12 5
cmexik, ну примерно так я и предполагал.
никакие ни параллельные ни ... вам не надо, не занимайтесь ерундой, забейте путь в PATH и одной строкой из ком. строки или в планировщике делайте обновление когда надо и сколько надо.
или поясните зачем весь этот "цирк" нужен, например так
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@echo on
set "f=C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe"
set "$tmp=C:\$"
 
setlocal enabledelayedexpansion
 (if exist "%$tmp%" <"%$tmp%" set /p n=)& set /a n+=1& set m=00!n!& >"%$tmp%" cmd /v/c echo:!m:~-3!
 <"%$tmp%" set /p z=
 "%f%" CONFIG /S test1cserver\%z% /LoadCfg"C:\test.cf" /UpdateDBCfg
 "%f%" ENTERPRISE /S test1cserver\%z% /Execute "C:\auto.epf"
endlocal
pause
при каждом новом запуске в "... test1cserver\XXX" XXX будет изменяться от 001 до 999

Добавлено через 2 минуты
и файл "C:\$" удалять нельзя, даже после перезагрузки там будет последнее показание счетчика.
0
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 41
27.01.2020, 17:22  [ТС] 6
я только первые шаги делаю в написании bat файлов, поэтому из вашего текста я почни ничего не понял, можете каждую строку расшифровать? буду очень признателен
0
4335 / 2125 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
27.01.2020, 17:31 7
cmexik, не поймете, лучше четко задачу дайте.
Может достаточно вам просто выполнить 6 раз запуск bat cо строками
Код
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\XXX /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\XXX /Execute "C:\auto.epf"
где XXX изменятся с 001 до 006
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
set "f=C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe"
 
for /l %%m in (1 1 6) do set n=00%%m& call :# %%n:~-3%%
pause& exit
 
:#
 "%f%" CONFIG /S test1cserver\%~1 /LoadCfg"C:\test.cf" /UpdateDBCfg
 "%f%" ENTERPRISE /S test1cserver\%~1 /Execute "C:\auto.epf"
exit /b
Добавлено через 2 минуты
т.е. будет последовательно выполнено это все как записано
Кликните здесь для просмотра всего текста

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1 файл - 001.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\001 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\001 /Execute "C:\auto.epf"
2 файл - 002.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\002 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\002 /Execute "C:\auto.epf"
3 файл - 003.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\003 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\003 /Execute "C:\auto.epf"
4 файл - 004.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\004 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\004 /Execute "C:\auto.epf"
5 файл - 005.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\005 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\005 /Execute "C:\auto.epf"
6 файл - 006.bat
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" CONFIG /S test1cserver\006 /LoadCfg"C:\test.cf" /UpdateDBCfg
"C:\Program Files (x86)\1cv8\8.3.14.1944\bin\1cv8.exe" ENTERPRISE /S test1cserver\006 /Execute "C:\auto.epf"


Добавлено через 1 минуту
это и называется автоматизация.
0
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 41
27.01.2020, 17:41  [ТС] 8
Итоговая цель - необходимо с 1 сервера выполнить обновление 70 баз 1с путем загрузки файла конфигурации в каждую из них , обновив их и запустить обработку первоначальной настройки
Ресурсами ограничены на запуск одновременно 5 конфигураторов, поэтому в итоге хотелось бы выполнить 14 пакетов по 5 параллельных запусков обновления. первые 5 запускаются отлично, все работает, но после отработки первых 5 все прекращается
0
886 / 531 / 67
Регистрация: 08.02.2017
Сообщений: 1,961
Записей в блоге: 1
27.01.2020, 18:10 9
Start /b тут еще не писали. По моему она как-то корректнее отрабатывает чем call в некоторых случаях
Start /b cmd /c..
0
4335 / 2125 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
27.01.2020, 22:39 10
Цитата Сообщение от testuser2 Посмотреть сообщение
в некоторых случаях
это как сравнить халву с зеленым горошком.


Добавлено через 11 минут
Цитата Сообщение от cmexik Посмотреть сообщение
запуск одновременно 5 конфигураторов
что это - конфигураторы?
при запуске bat из поста 7 происходит за один раз один запуск этого bat и последовательно по разу 1cv8.exe в нем, т.е. параллельно тут нет даже 2-х
вы вообще пробовали его запускать? О чем мы говорим? Я как не понимал задачу так и до сих пор ее не понимаю.
Цитата Сообщение от cmexik Посмотреть сообщение
после отработки первых 5 все прекращается
если так, тут ни параллельный ни последовательный запуск вам не помогут
А что со стандартным встроенным средством обновления и есть там админ который ведет 1с, чего мышей не ловит?

Добавлено через 14 минут
и что по второму коду из 3-го поста, там именно параллельный запуск, количество bat внутри можно изменить на другое, там логически все понятно.
0
886 / 531 / 67
Регистрация: 08.02.2017
Сообщений: 1,961
Записей в блоге: 1
28.01.2020, 05:44 11
Примерно понял, сабжу нужно, чтобы 5 задач запускались одновременно (параллельно) и после их завершения следующие пять задач (либо, додумывая более совершенный вариант - запуск следующей задачи, как только одна из пяти завершается). Думаю такое лучше (удобнее) осуществимо в wsh, поскольку нужно мониторить запущенные процессы с заданной коммандной строкой, либо, допустим, колличество запущенных копий cmd.exe..

Добавлено через 43 минуты

Не по теме:

Цитата Сообщение от alpap Посмотреть сообщение
это как сравнить халву с зеленым горошком.
стоило сказать более применимо :)

0
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 41
28.01.2020, 07:41  [ТС] 12
во, точно так и нужно. промониторить процесс с нужной командной строкой, не нашел пока способа как это сделать. tasklist позволяет найти процесс 1с, но в детальной инфе нет "командной строки" вызова. может я плохо искал? может можно процесс исходный запустить с нужным заголовком и по нему искать? что такое wsh?
0
4335 / 2125 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
28.01.2020, 12:19 13
Цитата Сообщение от cmexik Посмотреть сообщение
Как можно подобное организовать?
Цитата Сообщение от cmexik Посмотреть сообщение
после отработки первых 5 все прекращается
Цитата Сообщение от cmexik Посмотреть сообщение
промониторить процесс
cmexik, давайте так, вы сначала сами взвесите все моменты, хорошо подумаете, попробуете предложенные варианты, решите что и как вам надо и начнем сначала.
0
886 / 531 / 67
Регистрация: 08.02.2017
Сообщений: 1,961
Записей в блоге: 1
28.01.2020, 14:55 14
Цитата Сообщение от cmexik Посмотреть сообщение
во, точно так и нужно. промониторить процесс с нужной командной строкой, не нашел пока способа как это сделать. tasklist позволяет найти процесс 1с, но в детальной инфе нет "командной строки" вызова. может я плохо искал? может можно процесс исходный запустить с нужным заголовком и по нему искать? что такое wsh?
Получить комманду можно через wmic, была недавно тема, я представляю только примерно. Wsh это коммандный интерпретатор также как cmd.
0
6316 / 2746 / 1067
Регистрация: 06.06.2017
Сообщений: 9,303
28.01.2020, 15:33 15
Цитата Сообщение от testuser2 Посмотреть сообщение
Wsh это коммандный интерпретатор также как cmd.
Сервер сценариев — это интерфейс/оболочка для выполнения js/vbs/wsf скриптов и COM-объектов. А интерпретаторов (отнюдь не командных) два: wscript/cscript.
0
886 / 531 / 67
Регистрация: 08.02.2017
Сообщений: 1,961
Записей в блоге: 1
28.01.2020, 15:57 16
Цитата Сообщение от FlasherX Посмотреть сообщение
Сервер сценариев — это интерфейс/оболочка для выполнения js/vbs/wsf
Может быть я не спорю
Цитата Сообщение от testuser2 Посмотреть сообщение
Получить комманду можно через wmic,
Код
wmic process where Name='cmd.exe' get CommandLine |findstr "start .bat"
0
886 / 531 / 67
Регистрация: 08.02.2017
Сообщений: 1,961
Записей в блоге: 1
29.01.2020, 08:05 17
Допустим, примерно так (могут быть ошибки). "Бесконечный" цикл запускает проверку каждые 5 сек. колличества запущенных батников из заданного расположения. Если на выходе проверочной комманды ничего, (т.е. нету пятой строки, т.е. меньше пяти запущенных батника), то запускает следующий по счету (n-ый) батник, при условии что n не больше 10 (общее колличество батников) , если больше 10 выходит из цикла и завершается работа.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
 
cd /d %~dp0
set/a n=0
For %%a in (1,1,10000) do (
    wmic process where Name='cmd.exe' get CommandLine |findstr "C:\Users\User\Desktop\Новая.папка.(3)\ .bat" |findstr/n . |findstr/b 5 >nul||(
    set n+=1 
    if !n!>10 (call goto :end ) else call !n!.bat
    )   
    Timeout/t 5 /nobreak
)
:end
exit
0
4335 / 2125 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.01.2020, 22:53 18
testuser2, вроде с утра, на трезвую (?) голову ..., хотя для cmexik как раз будет над чем голову поломать, ему заняться точно нечем.

Добавлено через 3 минуты
testuser2, да, по секрету, пока не набрались опыта, коды, которые составляете, обязательно запускайте сами на подготовленном для проверки шаблоне и убедившись что они хотя бы работают, но вообще желательно чтобы еще и правильно или не занимайте лыжню.
0
29.01.2020, 22:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2020, 22:53
Помогаю со студенческими работами здесь

Удаленный запуск bat-файла на нескольких компьютерах
Добрый день! Есть несколько компьютеров на Windows 8, на них залит bat-скрипт который тянет с...

Последовательный запуск .bat файлов
Как последовательно запустить bat файлы (5 штук)? Схема такова: 1. Запуск первого батника 2....

В ярлыках браузеров emorhc.bat rehcnual.bat xoferif.bat erolpxei.bat
В ярлыках браузеров встроились вирусы и при открытии открывается реклама

Интеграция *.bat + C# (запуск *.exe со встроенным *.bat)
Возможно ли интегрировать *.bat в *.exe файл (C#) Visual Studio. То есть я создаю программу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru