Показать полную графическую версию : [решено] Как узнать запущен ли батник или нет
Здравствуйте, подскажите пожалуйста как решить проблему.
Есть у меня батник с youtube-dl который я хочу что бы он работал круглосуточно.
Но иногда когда мне нужна вся полоса пропускания я его закрываю.
Хочу добавить в шедулер задание на автоматический запуск этого файла.
Проблема как сделать так что бы если батник уже запущен то не запускать его второй инстанс.
Так как на компе youtube-dl используется активно то проверка через tasklist отпадает.
Пока нашёл выход в использование cmdow но интересуюсь нет ли способа
решить проблему нативными средствами.
Впрочем узнать о не нативных способах тоже интересно. Знание сила!
Спасибо.
Проверку работающего бантика можно сделать через маркерный файл. При закрытии бантика маркерный файл должен удаляться. При повторном запуске планировщика, батник ищет маркерный файл, если находит, то закрывается.
добавить в шедулер задание на автоматический запуск этого файла »
если батник уже запущен то не запускать его второй инстанс »
в планировщике во вкладке параметры при создания задания уже по умолчанию стоит "Не запускать второй экземпляр", поэтому ничего не требуется больше.
Вот это да! А я мучался :)
Спасибо большое!
Да и кстати. Задача новая выполнятся-то не будет, а вот окно новое процесса вероятно будет появляться и возможно мешать. Чтобы при запущенном процессе "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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC