796 Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hi

ich habe folgendes Problem:

Folgendes würde ich gern mit einer Datei zb. Batch machen lassen:

Wenn programm A läuft: Beende A, Starte B
Wenn programm B läuft: Beende B, Starte A
Wenn keines der beiden läuft: Starte A

Dabei habe ich noch folgendes Problem dass es sich bei den Programmen um die selben handelt die lediglich an verschieden Orten installiert sind. Sie haben also den gleichen Namen "Programm.exe" aber verschiene Pfade "C:\Programm.exe" und "D:\Programm.exe"

Leider habe ich von Batchdateien keine Ahnung und google hat mir auch nicht weiter geholfen.

Danke im Vorraus

Cheetah

1 Antwort

0 Punkte
Beantwortet von
Dim strProcessName, strCommandLineA, strCommandLineB, objWSH, objWMI, colProcessList, objProcess, boolA

strProcessName = "Programm.exe"
strCommandLineA = "C:\Programm.exe"
strCommandLineB = "D:\Programm.exe"
Folgendes als .vbs abspeichern funktioniert einwandfrei


Set objWSH = WScript.CreateObject("WScript.Shell")
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

Set colProcessList = objWMI.ExecQuery("Select * from Win32_Process Where Name = '" & strProcessName & "'")
For Each objProcess In colProcessList
If InStr(LCase(objProcess.CommandLine), LCase(strCommandLineA)) <> 0 Then boolA = True
objProcess.Terminate()
Next

If boolA Then
objWSH.Run """" & strCommandLineB & """"
Else
objWSh.Run """" & strCommandLineA & """"
End If

Set objWSH = Nothing
Set objWMI = Nothing
...