Wie prüfen ob programm des gleichen namens aus unterschiedlichen ordnern gestartet ist
ich habe ein für mich großes problem und zwar habe ich mir eine batch datei geschrieben um zu prüfen ob ein brogramm gestartet ist oder nicht,
fals nicht wird das programm gestartet nun mein problem ...
ich muss dieses programm aus 2 unterschiedlichen ordnern gleichzeitig starten ...
ich prüfe es mit :
tasklist | findstr /i "<hier name>.exe" >>nul
nun der haken ... die beiden programme haben den gleichen namen und können nicht umbenannt werden.
ergo sagt er wenn brogramm ordner1/name.exe gestartet ist bei der brüfung ob ordner2/name.exe gestartet ist logischerweise auch ja ... :S
wie kann ich das realisieren das er den unterschied erkennt ...
fals nicht wird das programm gestartet nun mein problem ...
ich muss dieses programm aus 2 unterschiedlichen ordnern gleichzeitig starten ...
ich prüfe es mit :
tasklist | findstr /i "<hier name>.exe" >>nul
nun der haken ... die beiden programme haben den gleichen namen und können nicht umbenannt werden.
ergo sagt er wenn brogramm ordner1/name.exe gestartet ist bei der brüfung ob ordner2/name.exe gestartet ist logischerweise auch ja ... :S
wie kann ich das realisieren das er den unterschied erkennt ...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 131915
Url: https://administrator.de/contentid/131915
Ausgedruckt am: 23.11.2024 um 04:11 Uhr
13 Kommentare
Neuester Kommentar
Hallo DeathShadow,
mir fällt da nur ein eingebundenes VBScript ein:
Zeile 11 lässt sich leicht in eine FOR Schleife mit Doppelpunkt als Delimiter einbinden.
Gruß
rubberman
PS: Etwas "Netikette" tut Not.
mir fällt da nur ein eingebundenes VBScript ein:
@echo off &setlocal
>"%temp%\proc.vbs" echo Set objInstances = GetObject("winmgmts://./root\cimv2").InstancesOf("Win32_Process", 48)
>>"%temp%\proc.vbs" echo On Error Resume Next
>>"%temp%\proc.vbs" echo For Each objInstance in objInstances
>>"%temp%\proc.vbs" echo With objInstance
>>"%temp%\proc.vbs" echo WScript.Echo .Caption ^& ":" ^& .ExecutablePath
>>"%temp%\proc.vbs" echo End With
>>"%temp%\proc.vbs" echo On Error Goto 0
>>"%temp%\proc.vbs" echo Next
cscript //nologo "%temp%\proc.vbs"|findstr /b /i /c:"irgendeine.exe"
del "%temp%\proc.vbs"
pause
Zeile 11 lässt sich leicht in eine FOR Schleife mit Doppelpunkt als Delimiter einbinden.
Gruß
rubberman
PS: Etwas "Netikette" tut Not.
Hallo DeathShadow,
mir fällt der der Processexplorer von SysInternals ein...
Viel Spaß damit
greetz Snow
mir fällt der der Processexplorer von SysInternals ein...
Viel Spaß damit
greetz Snow
Moin rubberman,
Bewirkt:
[okay, sind zwei instanzen aus dem gleichen Pfad in dem Beispiel...]
Grüße
Biber
Zeile 11 lässt sich leicht in eine FOR Schleife mit Doppelpunkt als Delimiter einbinden.
...oder aber du änderst gleich in der namenlosen .cmd-Datei (ich hab sie bei mir "rubbermansPslist.cmd" genannt die Zeile 11 in....
cscript //nologo "%temp%\proc.vbs"|findstr /b /i /c:"%~1"
...
Bewirkt:
>e:\schnipsel\rubbermansPslist.cmd java.exe
java.exe:C:\Programme\Java\jre6\bin\java.exe
java.exe:C:\Programme\Java\jre6\bin\java.exe
Drücken Sie eine beliebige Taste . . .
Grüße
Biber
Hallo Zusammen.
@Snowman25
Dein Link ist bei mir irgendwie down ?! Weiß also nicht wie man das in ein Batchfile einbinden könnte.
<edit>Link ist doch nicht down. So wie ich das sehe ist das aber ausschließlich eine GUI Anwendung.</edit>
@Biber
als "Stand-Allone" hast Du natürlich Recht. Hatte allerdings im Sinn, diese Zeile ähnlich TASKLIST direkt im Batch zu verwursten.
@DeathShadow
Wenn ich das ganze richtig verstehe, ungefähr so (UNGETESTET):
<edit>DeathShadow's Änderungen hinzugefügt</edit>
Grüße
rubberman
@Snowman25
Dein Link ist bei mir irgendwie down ?! Weiß also nicht wie man das in ein Batchfile einbinden könnte.
<edit>Link ist doch nicht down. So wie ich das sehe ist das aber ausschließlich eine GUI Anwendung.</edit>
@Biber
als "Stand-Allone" hast Du natürlich Recht. Hatte allerdings im Sinn, diese Zeile ähnlich TASKLIST direkt im Batch zu verwursten.
@DeathShadow
Wenn ich das ganze richtig verstehe, ungefähr so (UNGETESTET):
@echo off &setlocal
set waittime=10
start server_start.bat
ECHO STARTE SERVER
start /W Wait %waittime%
:top
>"%temp%\proc.vbs" echo Set objInstances = GetObject("winmgmts://./root\cimv2").InstancesOf("Win32_Process", 48)
>>"%temp%\proc.vbs" echo On Error Resume Next
>>"%temp%\proc.vbs" echo For Each objInstance in objInstances
>>"%temp%\proc.vbs" echo With objInstance
>>"%temp%\proc.vbs" echo WScript.Echo .ExecutablePath
>>"%temp%\proc.vbs" echo End With
>>"%temp%\proc.vbs" echo On Error Goto 0
>>"%temp%\proc.vbs" echo Next
cscript //nologo "%temp%\proc.vbs"|findstr /l /i /c:"C:\Easy WoW Server\0.3.5\CWRealm.exe">nul && ECHO logon-server ist online || (start CWRealm.exe &ECHO logon-server crashed ... starte neu)
start /W Wait 2
cscript //nologo "%temp%\proc.vbs"|findstr /l /i /c:"C:\Easy WoW Server\0.3.5\CWCore.exe">nul && ECHO main-server ist online || (start CWCore.exe &ECHO main-server crashed ... starte neu )
start /W Wait 2
cscript //nologo "%temp%\proc.vbs"|findstr /l /i /c:"C:\Easy WoW Server\0.3.5\test-realm\CWCore.exe">nul && ECHO test-server ist online || (start test-realm\CWCore.exe &ECHO test-server crashed ... starte neu)
del "%temp%\proc.vbs"
echo ____________________________________________________
echo pruefe in %waittime%sec erneut
echo ____________________________________________________
start /W Wait %waittime%
goto top
<edit>DeathShadow's Änderungen hinzugefügt</edit>
Grüße
rubberman
@ alle, die wissen wollen wie man den User (Process Owner) auch noch bekommt ...
die erste "unbenannte" mal in leicht abgewandelter Form:
@ DeathShadow
bekommst Du sicher selbst eingebaut, oder ?
Grüße
rubberman
die erste "unbenannte" mal in leicht abgewandelter Form:
@echo off &setlocal
>"%temp%\proc.vbs" echo Set objInstances = GetObject("winmgmts://./root\cimv2").InstancesOf("Win32_Process", 48)
>>"%temp%\proc.vbs" echo On Error Resume Next
>>"%temp%\proc.vbs" echo For Each objInstance in objInstances
>>"%temp%\proc.vbs" echo With objInstance
>>"%temp%\proc.vbs" echo ret = .GetOwner(strOwner)
>>"%temp%\proc.vbs" echo WScript.Echo .Caption ^& ":" ^& strOwner ^& ":" ^& .ExecutablePath
>>"%temp%\proc.vbs" echo End With
>>"%temp%\proc.vbs" echo On Error Goto 0
>>"%temp%\proc.vbs" echo Next
for /f "delims=: tokens=1,2*" %%a in ('cscript //nologo "%temp%\proc.vbs"') do echo.%%a&echo.%%b&echo.%%c&echo *********
del "%temp%\proc.vbs"
pause
@ DeathShadow
bekommst Du sicher selbst eingebaut, oder ?
Grüße
rubberman