Здравствуйте, подскажите пожалуйста как решить проблему.
Есть у меня батник с youtube-dl который я хочу что бы он работал круглосуточно.
Но иногда когда мне нужна вся полоса пропускания я его закрываю.
Хочу добавить в шедулер задание на автоматический запуск этого файла.
Проблема как сделать так что бы если батник уже запущен то не запускать его второй инстанс.
Так как на компе youtube-dl используется активно то проверка через tasklist отпадает.
Пока нашёл выход в использование cmdow но интересуюсь нет ли способа
решить проблему нативными средствами.
Впрочем узнать о не нативных способах тоже интересно. Знание сила!
Спасибо.
CMD/BAT - [решено] Как узнать запущен ли батник или нет
-
sov44
Re: CMD/BAT - [решено] Как узнать запущен ли батник или нет
Проверку работающего бантика можно сделать через маркерный файл. При закрытии бантика маркерный файл должен удаляться. При повторном запуске планировщика, батник ищет маркерный файл, если находит, то закрывается.
-
alpap
Re: CMD/BAT - [решено] Как узнать запущен ли батник или нет
Цитата kjuoky:
добавить в шедулер задание на автоматический запуск этого файла
Цитата kjuoky:
если батник уже запущен то не запускать его второй инстанс
в планировщике во вкладке параметры при создания задания уже по умолчанию стоит "Не запускать второй экземпляр", поэтому ничего не требуется больше.
добавить в шедулер задание на автоматический запуск этого файла
CMD/BAT - [решено] Как узнать запущен ли батник или нет
Цитата kjuoky:
если батник уже запущен то не запускать его второй инстанс
CMD/BAT - [решено] Как узнать запущен ли батник или нет
в планировщике во вкладке параметры при создания задания уже по умолчанию стоит "Не запускать второй экземпляр", поэтому ничего не требуется больше.
-
kjuoky
Re: CMD/BAT - [решено] Как узнать запущен ли батник или нет
Вот это да! А я мучался 
Спасибо большое!

Спасибо большое!
-
alpap
Re: CMD/BAT - [решено] Как узнать запущен ли батник или нет
Да и кстати. Задача новая выполнятся-то не будет, а вот окно новое процесса вероятно будет появляться и возможно мешать. Чтобы при запущенном процессе "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-
kjuoky