问题
I want to check if a process is running or not ? if the process is not running, then i execute it (in this example I took the calculator with process name = calc.exe) I started the batch script, but I have a syntax problem I believe !
@echo off
Set MyProcess=calc.exe
echo %MyProcess%
pause
for /f "tokens=1" %%i In ('tasklist /NH /FI "imagename eq %MyProcess%"') do set ff=%%i
echo %ff%
If /i %ff%==%MyProcess% (Echo %ff% est en cours d^'execution) Else (Start %MyProcess%)
pause
回答1:
Here's another way to do it using your code as a base:
@echo off
Set "MyProcess=calc.exe"
echo "%MyProcess%"
tasklist /NH /FI "imagename eq %MyProcess%" 2>nul |find /i "%MyProcess%" >nul
If not errorlevel 1 (Echo "%MyProcess%" est en cours d^'execution) else (start "" "%MyProcess%")
pause
回答2:
I take no credit for this; found it elsewhere online.
tasklist /FI "IMAGENAME eq winrar.exe" 2>NUL | find /I /N "winrar.exe">NUL
if "%ERRORLEVEL%"=="0" echo Program is running
Works on most versions of Windows so far.
回答3:
You may try like this:
tasklist /FI "IMAGENAME eq calc.exe" 2>NUL | find /I /N "calc.exe">NUL
if "%ERRORLEVEL%"=="0"
echo Running
回答4:
My solution in Vbscript (°_^)
Option Explicit
Dim ws,MyApplication,MyProcess
Set ws = CreateObject("WScript.Shell")
MyApplication = "%Programfiles%\WinRAR\WinRAR.exe"
MyProcess = "WinRAR.exe"
Do
'We check if the process is not running so we execute it
If CheckProcess(MyProcess) = False then
Call Executer(DblQuote(MyApplication),0)'0 to Hide the console
'We made a one-minute break and continue in our loop to check
'whether or not our process exists(in our case = WinRAR.exe)
Pause(1)
End if
Loop
'***********************************************************************************************
Function CheckProcess(MyProcess)
Dim strComputer,objWMIService,colProcessList
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select Name from Win32_Process WHERE Name LIKE '" & MyProcess & "%'")
If colProcessList.count > 0 then
CheckProcess = MyProcess & " is running"
CheckProcess = True
else
CheckProcess = MyProcess & " is not running"
CheckProcess = False
End if
Set objWMIService = Nothing
Set colProcessList = Nothing
End Function
'***********************************************************************************************
Sub Pause(NMins)
Wscript.Sleep(NMins*1000*60)
End Sub
'***********************************************************************************************
Function Executer(StrCmd,Console)
Dim ws,MyCmd,Resultat
Set ws = CreateObject("wscript.Shell")
'La valeur 0 pour cacher la console MS-DOS
If Console = 0 Then
MyCmd = "CMD /C " & StrCmd & " "
Resultat = ws.run(MyCmd,Console,True)
If Resultat = 0 Then
Else
MsgBox "Une erreur inconnue est survenue !",16,"Une erreur inconnue est survenue !"
End If
End If
'La valeur 1 pour montrer la console MS-DOS
If Console = 1 Then
MyCmd = "CMD /K " & StrCmd & " "
Resultat = ws.run(MyCmd,Console,False)
If Resultat = 0 Then
Else
MsgBox "Une erreur inconnue est survenue !",16,"Une erreur inconnue est survenue !"
End If
End If
Executer = Resultat
End Function
'**********************************************************************************************
Function DblQuote(Str)
DblQuote = Chr(34) & Str & Chr(34)
End Function
'**********************************************************************************************
回答5:
Well, I also found another way to achieve continuously check (in loop) the existence of process "WinRAR.exe" (as an example of application to check) so we can change of course the path and the process name to check.
@echo off
Set "MyApplication=%Programfiles%\WinRAR\WinRAR.exe"
Set "MyProcess=WinRAR.exe"
Color 9B
Title Verification de l^'execution du processus "%MyProcess%" by Hackoo
mode con cols=75 lines=2
:start
cls
tasklist /nh /fi "imagename eq %MyProcess%" 2>nul |find /i "%MyProcess%" >nul
If not errorlevel 1 (Echo "%MyProcess%" est en cours d^'execution) else (start "" "%MyApplication%")
ping -n 60 127.0.0.1 >nul
goto start
来源:https://stackoverflow.com/questions/23266509/check-if-a-process-is-running-or-not