CMD/BAT - [решено] Как узнать запущен ли батник или нет

Ответить
 • Просмотры: 1
Аватара пользователя
kjuoky

CMD/BAT - [решено] Как узнать запущен ли батник или нет

Сообщение kjuoky »

Здравствуйте, подскажите пожалуйста как решить проблему.

Есть у меня батник с youtube-dl который я хочу что бы он работал круглосуточно.

Но иногда когда мне нужна вся полоса пропускания я его закрываю.

Хочу добавить в шедулер задание на автоматический запуск этого файла.

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

Так как на компе youtube-dl используется активно то проверка через tasklist отпадает.

Пока нашёл выход в использование cmdow но интересуюсь нет ли способа

решить проблему нативными средствами.

Впрочем узнать о не нативных способах тоже интересно. Знание сила!

Спасибо.
Аватара пользователя
sov44

Re: CMD/BAT - [решено] Как узнать запущен ли батник или нет

Сообщение sov44 »

Проверку работающего бантика можно сделать через маркерный файл. При закрытии бантика маркерный файл должен удаляться. При повторном запуске планировщика, батник ищет маркерный файл, если находит, то закрывается.
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Как узнать запущен ли батник или нет

Сообщение alpap »

Цитата kjuoky:



добавить в шедулер задание на автоматический запуск этого файла
CMD/BAT - [решено] Как узнать запущен ли батник или нет





Цитата kjuoky:



если батник уже запущен то не запускать его второй инстанс
CMD/BAT - [решено] Как узнать запущен ли батник или нет




в планировщике во вкладке параметры при создания задания уже по умолчанию стоит "Не запускать второй экземпляр", поэтому ничего не требуется больше.
Аватара пользователя
kjuoky

Re: CMD/BAT - [решено] Как узнать запущен ли батник или нет

Сообщение kjuoky »

Вот это да! А я мучался Изображение

Спасибо большое!
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Как узнать запущен ли батник или нет

Сообщение alpap »

Да и кстати. Задача новая выполнятся-то не будет, а вот окно новое процесса вероятно будет появляться и возможно мешать. Чтобы при запущенном процессе "name.bat" и повторном его запуске чем угодно не появлялось новых процессов и окон соответственно и работал именно первый запущенный процесс этого имени, можно использовать вот такую вставку в bat который будет запускаться:



Код:

Код: Выделить всё

@echo off
:: Проверка на запущенный процесс "%~nx0" [отсюда и до строки :: Рабочий код ничего не изменять и не трогать]
:: ----------------------------------------------
set "Processid="
for /f %%a in ('wmic process where "name='cmd.exe' and Commandline like '%%%~nx0%%' and not Commandline like '%%|%%'" get Processid /value^|find "="') do (
 set /a n+=1& if not defined Processid set "%%a"
)
if %n% gtr 1 wmic process where "name='cmd.exe' and Commandline like '%%%~nx0%%' and not Commandline like '%%|%%' and not Processid='%Processid%'" delete
:: ----------------------------------------------
:: Рабочий код
echo Hello!
:: При запущенном процессе и повторном его запуске дозаписи в файл не произойдет
echo Proba>>file.txt
pause
Ответить

Вернуться в «Скриптовые языки администрирования Windows»