Войти

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


smvit
02-06-2021, 14:03
Добрый день! Прошу помощи в решении следующей задачи: у меня есть два батника, которые в свою очередь запускают exeшник с бесконечным циклом выполнения, как я понимаю, мне нужен третий батник, который будет запускать первый, через 5 минут его завершать и запускать второй, так же на пять минут, потом опять первый, и так по бесконечному циклу. третий день пытаюсь найти решение, но к сожалению моим мозгам это не под силу, понимаю что решение скорее всего очень просто, заранее спасибо и извините за глупые вопросы.

megaloman
02-06-2021, 15:33
@Echo Off
:Begin
Call "D:\CMD_Forum\я210602_01.bat" 300
Call "D:\CMD_Forum\я210602_02.bat" 300
GoTo :Begin
@Echo Off
rem ...............
rem ...............
rem ...............
rem ...............
>Nul (
Start " " "C:\Windows\System32\notepad.exe"
TimeOut /T %~1
TASKKILL /IM "notepad.exe"
)
Exit /B
@Echo Off
rem ...............
rem ...............
rem ...............
rem ...............
>Nul (
Start " " "C:\Windows\System32\calc.exe"
TimeOut /T %~1
TASKKILL /IM "calc.exe"
)
Exit /B

alpap
02-06-2021, 17:29
smvit,
если фиксировано время и мы не привязаны к работе конкретно программы. то поручите это дело планировщику

smvit
02-06-2021, 18:57
alpap,
с планировщиком у меня не получилось, там минимальное время до завершения процесса 30 минут, либо я не понял как с ним справиться. И конкретное время запуска для меня не имеет значения, мне нужно один раз запустить алгоритм и пусть живет своей жизнью постоянно, а с планировщиком, если я правильно понял, придется очень много задач создавать

megaloman,
большое спасибо, завтра буду пробовать.
Попутный вопрос, у Вас в первом батнике timeout 1, значит если мне нужно что бы он закрылся через 5 минут поменять единицу на 300? или так оставить?

megaloman
02-06-2021, 19:08
smvit, Call "D:\CMD_Forum\я210602_01.bat" 300 »TimeOut /T %~1 » Батники запускаются с параметром, в данном случае 300. Это 300 секунд. В батнике вызывается Timeout с полученным параметром %~1. Можно было написать %1, но привычка ... Это не 1 сек, это именно значение полученного параметра, как договорились - передали 300 сек. Надо другое время - меняйте 300 на нечто другое в вызове батников.

smvit
02-06-2021, 19:12
megaloman,
Понял, благодарю. Завтра опробую, отпишусь как получилось.

И еще один момент, до того, как мне понадобилось использовать два батника по-очереди, я запускался одним в скрытом режиме через vbs с таким содержанием:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\4.bat" & Chr(34), 0
Set WshShell = Nothing
могу ли я вот этот запустить так же? То есть весь процесс запуска всех этих батников будет так же скрыт как и в случае с изначальным вариантом?
@Echo Off
:Begin
Call "D:\CMD_Forum\я210602_01.bat" 300
Call "D:\CMD_Forum\я210602_02.bat" 300
GoTo :Begin »

megaloman
02-06-2021, 19:59
smvit, vbsWith CreateObject("WScript.Shell")
Do
Ret = .Run("""D:\CMD_Forum\я210602_01.bat"" 300", 0, True)
Ret = .Run("""D:\CMD_Forum\я210602_02.bat"" 300", 0, True)
Loop
End With

smvit
03-06-2021, 09:59
megaloman,
Доброго дня. Вариант с тремя батниками сработал как нужно, огромное спасибо!
Но через vbs не получилось. Запускаю и ничего не происходит, пробовал своим первым способом через vbs запустить основной батник, скрывается только он, остальные два по очереди так и висят на видном месте, может еще что-то можно попробовать?

megaloman
03-06-2021, 10:02
smvit, переименуйте свой vbs в файл с расширением txt и прикрепите к сообщению. Дайте посмотреть именно файл.
Кстати, вариант с запуском общего батника из-под VBS тоже работаетWith CreateObject("WScript.Shell")
Ret = .Run("""D:\CMD_Forum\я210602_00.bat""", 0, False)
End With
Но: «Не следует множить сущее без необходимости» - зачем еще один батник, если сразу работает VBS? Надо докопаться до причины.

smvit
03-06-2021, 10:51
vbs

smvit
03-06-2021, 11:10
Кстати, вариант с запуском общего батника из-под VBS тоже работает
Код:
With CreateObject("WScript.Shell")
Ret = .Run("""D:\CMD_Forum\я210602_00.bat""", 0, False)
End With »
работает, но так же скрывает только основной, те два поочередных так же отображаются

megaloman
03-06-2021, 14:57
smvit, Из вашего файла ясно, что "С" это символ с кодом D1, то есть это кириллица в 1251, русская буква, а надо 43, то есть это должна быть латиница, Си английское. Исправил, приложил, пробуйте. Странно, что Вы не видите сообщение об ошибке при запуске vbs с таким кривым путем.но так же скрывает только основной, те два поочередных так же отображаются » У меня отображаются блокнот и калькулятор, CMD окно не видно.
Кстати, в диспетчере задач у Вас случайно не куча процессов wscript.exe ? Может, Вы скрипт запускаете от другого имени и сообщение об ошибке не видно?

smvit
03-06-2021, 15:10
Запустил, отображается две командные строки. Одна пустая CScript.exe и вторая с выполнением батника

Поправка, я запускал через «открыть в командной строке» запустил просто, отображает выполнение первого батника в командной строке

megaloman
03-06-2021, 15:20
Как Вы запускаете vbs? Я бы рекомендовал
wscript.exe "D:\CMD_Forum\я210602_000.vbs"




© OSzone.net 2001-2012