Check if a process is running or not?

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-28 01:31:50

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!