Windows проверить запущен ли процесс

Как проверить, запущен ли процесс через пакетный скрипт

Как я могу проверить, запущено ли приложение из пакетного (хорошо cmd) файла?

Мне не нужно запускать другой экземпляр, если программа уже запущена. (Я не могу изменить приложение, чтобы сделать его только один экземпляр.)

Также приложение может работать как любой пользователь.

Еще одна возможность, которую я придумал, вдохновленная использованием grep :

Не нужно сохранять дополнительный файл, поэтому я предпочитаю этот метод.

Вот как я это сделал:

Приведенное выше откроет Блокнот, если он еще не запущен.

Изменить: Обратите внимание, что это не найдет приложения, скрытые от списка задач. Это будет включать любые запланированные задачи, выполняемые от имени другого пользователя, поскольку они автоматически скрываются.

Мне нравится решение Chaosmaster! Но я искал решение, которое не запускает другую внешнюю программу (например, find.exe или findstr.exe ). Поэтому я добавил идею из решения Мэтта Лейси, которое создает временный файл, которого можно избежать. В конце я смог найти довольно простое решение, поэтому я поделился им .

Это хорошо работает для меня .

Предложение npocmaka использовать QPROCESS вместо TASKLIST велико, но его ответ настолько велик и сложен, что я чувствую себя обязанным опубликовать довольно упрощенную версию, которая, я думаю, решит проблему большинства неопытных пользователей:

Приведенный выше код был протестирован в Windows 7 с пользователем с правами администратора.

В Windows вы можете использовать инструментарий управления Windows (WMI), чтобы убедиться, что не запущены приложения с указанной командной строкой, например:

wmic process where (name=»nmake.exe») get commandline | findstr /i /c:»/f load.mak» /c:»/f build.mak» > NUL && (echo THE BUILD HAS BEEN STARTED ALREADY! > %ALREADY_STARTED% & exit /b 1)

Я использую PV.exe с http://www.teamcti.com/pview/prcview.htm, установленный в Program Files \ PV с командным файлом, подобным этому:

Ответ TrueY показался мне самым элегантным решением, однако мне пришлось немного повозиться, потому что я не понимал, что именно происходит. Позвольте мне все прояснить, чтобы сэкономить время для следующего человека.

Измененный ответ TrueY:

Во всяком случае, я надеюсь, что это помогает. Я знаю, что иногда чтение пакетной / командной строки может сбивать с толку, если вы новичок, как я.

Ответ предоставляется Matt Lacey работает для Windows XP. Однако в Windows Server 2003 строка

ИНФОРМАЦИЯ: Не выполняются задачи, соответствующие указанным критериям.

который затем читается при запуске процесса.

У меня нет опыта работы с пакетными сценариями, поэтому мое решение состоит в том, чтобы затем искать имя процесса в search.log файле и закачивать результаты в другой файл и искать его для любого вывода.

Я надеюсь, что это помогает кому-то еще.

Я вроде WMIC и TASKLIST инструментов , но они не доступны в доме / основные изданиями windows.Another способа является использование QPROCESS команд доступны на почти каждое окно машины (для тех , которые имеют терминальные услуги — Я думаю , что только выиграть XP без SP2, так practialy каждого окна машины):

Читайте также:  Проблема windows failed to start

QPROCESS Команда не настолько мощна, как TASKLIST и ограничена отображением только 12 символов имени процесса, но ее следует учитывать, если TASKLIST она недоступна.

Более простое использование, когда в качестве аргумента используется имя процесса ( .exe суффикс является обязательным в этом случае, когда вы передаете имя исполняемого файла):

Разница между двумя способами QPROCESS использования заключается в том, что QPROCESS * будут перечислены все процессы, в то время как QPROCESS some.exe будут фильтроваться только процессы для текущего пользователя.

Использование WMI объектов через exe- WMIC файл сценария Windows вместо этого также является опцией. Его следует запускать также на каждой машине Windows (исключая те, где WSH выключен, но это редкий случай). Здесь находится файл bat, в котором перечислены все процессы через WMI классы и могут использоваться вместо QPROCESS приведенного выше сценария (это гибрид jscript / bat и должен быть сохранен как .bat ):

И модификация, которая проверит, запущен ли процесс:

Два варианта могут быть использованы на машинах, которые не имеют TASKLIST .

Конечная техника использует MSHTA . Это будет работать на каждой машине с Windows от XP и выше и не зависит от настроек хоста скрипта Windows. MSHTA хотя вызов может немного снизить производительность (опять же следует сохранить как bat):

Условия в bat файле если запущен процесс

Всем привет! Помогите пожалуйста с такой проблемой: пытаюсь создать bat файл для спящего режима. (Bat файл запускается автоматически из другой программы при простое системы)

Перерыл уже весь интернет и всю справку по командам, смог только найти вот это:
%windir%/system32/tasklist /FI «IMAGENAME eq «wmplayer.exe» — эта строка проверяет, запущен ли процесс wmplayer.exe

один из моих неправильных вариантов написания такой:

Проверять, запущен ли процесс, а если он не запущен, то запускать его
Всех приветствую. В интернете не нашёл ответа на свой вопрос. Очень нужен vbs-скрипт, который.

Проверять, запущен ли процесс, а если не запущен, то выполнять действия
Всем привет! Помогите пожалуйста с такой проблемой: пытаюсь создать bat для циклической проверки.

Если процесс не запущен то
Мне нужно чтобы при запуске батника оно искало процесс и если процесс не найден то goto main а если.

Выполнение условия в bat файле по наличию текста в определённом файле
Задача: найти опеределённую строчку текста в файле и если она совпадает с искомой, то выполнить.

Спасибо, пробую с этим кодом, но пока не получается, запускаю батник с этим кодом при запущенном и не запущенном процессе wmplayer.exe — ничего не происходит
(забыл указать ОС: Windows 7 x64 Ultimate).

Добавлено через 1 час 34 минуты
Прошу прощения, я малость недоописал свою проблему:

Проверять, запущен ли процесс, а если он не запущен, то запускать его

Всех приветствую. В интернете не нашёл ответа на свой вопрос.
Очень нужен vbs-скрипт, который будет проверять, запущен ли процесс, а если не запущен, то запускать его.
В принципе, вот пункты, которые важны.

1. Проверка процесса должна происходить раз в 15 минут.
2. Вот строка запускаемого процесса с параметрами:

Читайте также:  Переход между окнами windows form

— Это сейчас прописано в батнике. батник не справляется с перезапуском как нужно.
3. Название проверяемого запущенного процесса: RustDedicated.exe.

Буду крайне благодарен тому, кто разбирается в Visual Basic Script’ах и поможет мне.

Проверять, запущен ли процесс, а если не запущен, то выполнять действия
Всем привет! Помогите пожалуйста с такой проблемой: пытаюсь создать bat для циклической проверки.

Проверять каждые 2-3 секунды, запущен ли файл 1.wav, если да, то запустить 1.bat
доброго времени суток подскажите пожалуйста как написать BAT CMD или VBScript который будет.

Если процесс не запущен то
Мне нужно чтобы при запуске батника оно искало процесс и если процесс не найден то goto main а если.

Условия в bat файле если запущен процесс
Всем привет! Помогите пожалуйста с такой проблемой: пытаюсь создать bat файл для спящего режима.

разобраться со своим прежде, чем делать выводы никак? Где ваш батник?

Впрочем, не нужен. Приведу элементарный вариант на примере калькулятора:

game.exe есть тот самый процесс.

Добавлено через 19 секунд

Команду tasklist ввести в консоль и проверить, работает ли вывод списка процессов вообще (может, у Вас служба WMI отключена).

Добавлено через 3 минуты
И неплохо бы детальнее пояснить вот это, что конкретно происходит.

WMI включена (это же Служба Инструментов Windows?).
Сейчас сделаю так, как Вы просите.

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

а не в том, что консоль не отображает ход своей работы.
Не отображает ибо ей не даны такие инструкции, а даже наоборот частично спрятаны перенаправлением потока в > nul

Добавлено через 1 минуту
Если автор не против, перенесу тему в раздел Batch.
Все равно здесь уже не планируется кода на VBScript.

Пока не нужно.
Исполнитель ещё не утверждён. может сольётся ещё.

Батник не работает как нужно.
Поясню.
Это всё нужно для сервера игрового — Rust.
Друг у меня на компьютере поставил сервер.
Проблема в том, что сервер периодически нужно выключать полностью командой с сайта, чтобы этот сервер обновить до актуальной версии.
Мы заметили, что если с сайта слать команду, то сервер то выключается. но батник не стартует его через нужное количество времени.
Поэтому я и решил, что лучшим вариантом будет не неделю париться с батником, а сразу сделать всё на VBS.
Надеюсь, я теперь ясно пояснил? Я уже даже разжевал.

Добавлено через 17 часов 32 минуты
Тему можно закрывать. Скрипт написан.

Это все лишнее.
Реальный код, который запускался на сервере, упакованный в архив zip, и прикрепленный к сообщению — вот самое лучше объяснение.

Windows проверить запущен ли процесс

Вопрос

Подскажите, пожалуйста, решение такой задачи:

Нужен скрипт, который бы через каждые 30 минут, на протяжении 9 часов (т.е в рабочее время) проверял бы, запущена ли программа (сетевой чат — Network Assistant, к примеру), и, если бы не находил ее среди запущенных процессов, то запускал бы при очередной проверке раз в 30 минут. И, чтобы потом этот скрипт можно было бы засунуть в GPO, и раздать пользователям при входе в компьютер.

Читайте также:  Приложение wink ростелеком для windows

ЗЫ пытался задачу решить немного иначе, но столкнулся с проблемой:

Создал *.cmd файл с таким содержанием:

Засунул этот файл на выполнение, через GPO, в планировщик задач к пользователям, но тут выскочила проблема — если чат запущен, планировщик отрабатывает корректно, если нет, скрипт запускает программу, но остается висеть окно планировщика заданий.

Ответы

Попробовать обойтись без hstart,а использовать vbscript и запускать, как логон скрипт:

Если не использовать планировщик, возможно ли этот скрипт переделать, чтобы он повторялся после логона каждый час? И будет ли выскакивать каждый раз консольное окно, на доли секунды, при его отработке?

Можно, нет не будет. Запускать cscript //nologo \\server\share\inv.vbs

CreateObject(«Wscript.Shell»).Run «\\server\share\nassi.cmd», 0, False

Все ответы

В продолжение темы. Скрипт приобрел вид:

@echo off
set application=nassi.exe
tasklist | find /I «%application%» >nul
if errorlevel 1 (
start «» /b «%ProgramFiles(x86)%\Network Assistant\nassi.exe»
goto exit
) else (
echo %application% is running
)

Но, начальство хочет, чтоб скрипт работал не только на Windows 7 x64. но и на ХР х86. Догадка в том, чтоб в скрипте, перед запуском программы выполнялась проверка на наличие файла nassi.exe по двум путям C:\Program Files (x86)\Network Assistant\nassi.exe — для х64 системы, и C:\Program Files\Network Assistant\nassi.exe для х86 системы. Помогите переделать скрипт, пожалуйста.

При таком скрипте:

if %PROCESSOR_ARCHITECTURE%==x86 set folder=»%ProgramFiles%\Network Assistant\nassi.exe»
if %PROCESSOR_ARCHITECTURE%==AMD64 set folder=»%ProgramFiles(x86)%\Network Assistant\nassi.exe»

set application=nassi.exe
tasklist | find /I «%application%» >nul

if errorlevel 1 (
start «» /b «%folder%»
goto exit
) else (
echo %application% is running
)

Выдает ошибку «Непредвиденное появление: \Network.». Что я делаю не так?

Большое спасибо! Заработало, как надо!

И снова здравствуйте 🙂

После успешного решения задачи вылезли новые требования, как результат — новые баги.

Скрипт работает отлично, но при выполнении, на долю секунды появлялось и исчезало консольное окно планировщика задач. Так как пользователей это не устраивало, я, с помощью программы Hstart.exe (http://www.ntwind.com/software/hstart.html), переделал групповую политику так, чтобы она запускала программу hstart.exe, а та уже, в свою очередь запускала скрипт скрытно. Проблема в том, что от имени администратора домена групповая политика отрабатывает отлично, а от имени обычного пользователя нет , и начинают сыпаться ошибки:

Элемент предпочтения пользователь «Nassi» в объекте групповой политики «Network assistant <97e2b011-f6e1-48b6-9510-4ca6b60e37ee>» не применен по причине ошибки с кодом «0x80070005 Отказано в доступе.» Эта ошибка была отключена.

Как сделать так, чтобы правило создавалось от учетки обычного пользователя, а не только от доменного админа?

Напомню, групповая политика:

Конфигурация пользователя — Настройка — Параметры панели управления — назначенные задания —

(пытался вставить скриншот, но ограничения форума не дали это сделать)

Выполнить \\сервер\путь к файлу\hstart.exe

Аргументы \NOCONSOLE \\сервер\путь к файлу\nassi.cmd (соответственно, программа hstart.exe скрытно запускает скрипт nassi.cmd)

Галка Выполнять в контексте безопасности вошедшего пользователя стоит.

ЗЫ Сервер W2008 R2

UPD.
Походу групповая политика не может создать задание от имени обычного пользователя. Возможно это как-то вылечить? Или где и какие права им нужно добавить, чтоб групповая политика могла создавать задание от имени пользователя?

Оцените статью