У меня есть вопрос для ya'll ... надеюсь, кто-то может помочь.Убить процесс в пакетном файле, который соответствует определенному имени и пользователю
фона: у меня есть, позволяет сказать, 6 .exe-х, которые запускаются на 6 отдельных плановых заданий (с расширением .exe являются имени клиента и посмотреть, как это - CLIENTNAME_PROGRAM.EXE). Эти 6 задач выполняются под тремя отдельными учетными записями пользователей для целей планирования. Смысл, я могу одновременно запустить 2 процесса под разными учетными записями (вы не можете запускать их одновременно под одним ID). Если вы используете один идентификатор, вы должны запустить его, дождаться его окончания, а затем подождать следующего.
Проблема: У меня есть код в моем командном файле, который ищет другой процесс и ждет его окончания ... однако, это было написано, когда имя .exe было одинаковым для всех процессов (раньше это было просто PROGRAM.EXE, прежде чем мы перейдем к CLIENTNAME_PROGRAM.EXE). Проблема в том, что я только что понял, что моя переменная% TFProName% установлена на имя клиента, который ПОСТОЯННО пытается запустить ... поэтому он не ищет, что любое другое TFProName работает под той же учетной записью компьютера, которая в настоящее время застряла. Имеет ли это смысл?
Итак, мне нужно:
Перед началом CLIENT2_PROGRAM под пользователя account1, поиск любого другого * процесса _PROGRAM работает под account1 и ждать его до конца. Если он длится долго, запустите сценарий powershell, чтобы убить упомянутый процесс.
Ниже мой фрагмент кода:
:PRVARCHSTART
tasklist /FI "IMAGENAME eq %TFProName%" | find /I "%TFProName%" >nul
IF ERRORLEVEL 1 (
echo **** %TIME% - Another archive process is not running...checking for an import/export process... **** >> "%logfilefolder%\%logfilename%"
goto PRVARCHEND
) ELSE (
echo **** %TIME% - Another archive is running...please wait...checking again... **** >> "%logfilefolder%\%logfilename%"
PING 1.1.1.1 -n 1 -w 5000 >nul
powershell "& '%scriptdirectory%\KillTFProAdmin.ps1'"
goto PRVARCHSTART
)
:PRVARCHEND
Благодаря @MC ND. Я дам этому вихрь. Может потребовать меня через день или два из-за других вещей. Я ценю помощь! – Ilya
Один вопрос @MC ND ... Я помещаю имя файла программы, пытающейся запустить (из этого скрипта) в process = spot? – Ilya
@Ilya, нет, переменная процесса используется для хранения PID процесса (если он присутствует). Посмотрите на строку 'tasklist'. Есть две команды 'findstr', одна для фильтрации учетной записи пользователя и одна для фильтрации имени процесса (ну, вторая часть имени процесса из вашего вопроса) –