Brauche Hilfe mit einem Batch Script( or condition)
Hallo
Ich habe ne Frage bezüglich einem Batch Script:
Das Script soll ein Programm Killen und dann abfragen, wo die EXE ist und dementsprechend das Programm restarten soll.
Aber irgendwie klappt das nicht. Glaube mir fehlt eine "or condition" bei der Abfrage des Verzeichnispfades, bloss weiss ich nicht wie ich die in einer Batch abbilden soll.
Update: Glaube das hat nichts mit or zu tun ... mir fehlt einfach die richtige Syntax, dass er die if statements nacheinander abläuft.
Hat jemand ne idee ?
grüße
Ich habe ne Frage bezüglich einem Batch Script:
Das Script soll ein Programm Killen und dann abfragen, wo die EXE ist und dementsprechend das Programm restarten soll.
Aber irgendwie klappt das nicht. Glaube mir fehlt eine "or condition" bei der Abfrage des Verzeichnispfades, bloss weiss ich nicht wie ich die in einer Batch abbilden soll.
Update: Glaube das hat nichts mit or zu tun ... mir fehlt einfach die richtige Syntax, dass er die if statements nacheinander abläuft.
:: ######## Kill und neustarten von Estos Client###
sleep 1
taskkill /IM ECtiClient.exe /F
sleep 1
:: ##### Ist es x86 oder Programfiles ? ######
IF EXIST "%programfiles%\ESTOS\ProCall 4\ECtiClient.exe"
goto start2
IF EXIST "%programfiles(x86)%\ESTOS\ProCall 4\ECtiClient.exe"
goto start1
IF EXIST "%programfiles(x86)%\ESTOS\ProCall 5\ECtiClient.exe"
goto start3
IF EXIST "%programfiles%\ESTOS\ProCall 5\ECtiClient.exe"
goto start4
else
goto Exit
:: ### Procall Neustarten####
:start1
start " " "%programfiles(x86)%\ESTOS\ProCall 4\ECtiClient.exe"
sleep 1
goto Exit
:start2
start " " "%programfiles%\ESTOS\ProCall 4\ECtiClient.exe"
sleep 1
goto Exit
:start3
start " " "%programfiles%(x86)%\ESTOS\ProCall 5\ECtiClient.exe"
sleep 1
goto Exit
:start4
start " " "%programfiles%\ESTOS\ProCall 5\ECtiClient.exe"
sleep 1
goto Exit
:Exit
Exit
Hat jemand ne idee ?
grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 328689
Url: https://administrator.de/contentid/328689
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
21 Kommentare
Neuester Kommentar
Nein, wie du durch einen simplen Test schnell herausgefunden hättest. Du prüfst ob die Datei existierst und wenn das der Fall ist wird diese eben aufgerufen.
Krämer
Krämer
Ich würde optimalerweise den Pfad zum Installationspfad von Estos direkt aus der Registry (reg query) abfragen...so macht man das normalerweise.
Gruß
Gruß
Else weglassen das ist überflüssig. Du wirst ja kaum zwei Versionen auf ein und dem selben Rechner haben.
Wie wärs mal mit lesen:
http://ss64.com/nt/if.html
Wie wärs mal mit lesen:
http://ss64.com/nt/if.html
Zitat von @132272:
Ich würde optimalerweise den Pfad zum Installationspfad von Estos direkt aus der Registry (reg query) abfragen...so macht man das normalerweise.
Gruß
Ich würde einfach den vom Hersteller vorgegebenen Weg gehen Ich würde optimalerweise den Pfad zum Installationspfad von Estos direkt aus der Registry (reg query) abfragen...so macht man das normalerweise.
Gruß
Gruß Krämer
Zitat von @Kraemer:
Klar, ich meinte damit nur die Vorgehensweise wenn einem ein Pfad einer Anwendung unbekannt ist ;-P anstatt alles durchzuprobieren.Zitat von @132272:
Ich würde optimalerweise den Pfad zum Installationspfad von Estos direkt aus der Registry (reg query) abfragen...so macht man das normalerweise.
Gruß
Ich würde einfach den vom Hersteller vorgegebenen Weg gehen Ich würde optimalerweise den Pfad zum Installationspfad von Estos direkt aus der Registry (reg query) abfragen...so macht man das normalerweise.
Gruß
Hallo
Genau. Oder die XML Datei per Startup-Script verteilen, denn dann ist der Estos-Client bestimmt noch nicht aktiv, und muss demzufolge auch nicht beendet werden
Gruss
Ich würde einfach den vom Hersteller vorgegebenen Weg gehen
Genau. Oder die XML Datei per Startup-Script verteilen, denn dann ist der Estos-Client bestimmt noch nicht aktiv, und muss demzufolge auch nicht beendet werden
Gruss
Hallo fireskyer,
wie wäre es, wenn du zunächst den Pfad zur Exe aus dem laufenden Prozess ermittelst, um sie nach dem Kill genau dort wieder aufzurufen?
Ich habe hier etwas dazu gefunden:
Abbildpfadname eines Prozesses abfragen. Prozess abhängig von seinem Abbildpfadnamen (Ausführungspfad, ExecutablePath) neustarten
Der Aufruf müsste dann wohl so aussehen:
Gruß
Christian
wie wäre es, wenn du zunächst den Pfad zur Exe aus dem laufenden Prozess ermittelst, um sie nach dem Kill genau dort wieder aufzurufen?
Ich habe hier etwas dazu gefunden:
Abbildpfadname eines Prozesses abfragen. Prozess abhängig von seinem Abbildpfadnamen (Ausführungspfad, ExecutablePath) neustarten
Der Aufruf müsste dann wohl so aussehen:
for /f "skip=1 delims=" %%a in ('wmic process where "name='ecticlient.exe'" get ExecutablePath') do for /f "delims=" %%b in ("%%~a") do set pfadzurexe="%%~b"
Gruß
Christian
Ich dachte eher daran, zu Beginn deines Scriptes Pfad und Namen des Estos-Clients auszulesen, dann den Prozess zu beenden und anschließend das Programm in dem gemerkten Pfad wieder aufzurufen:
edit: start und Anführungszeichen vergessen
Gruß
Christian
for /f "skip=1 delims=" %%a in ('wmic process where "name='ecticlient.exe'" get ExecutablePath') do for /f "delims=" %%b in ("%%~a") do set pfadzurexe="%%~b"
taskkill /f /im ecticlient.exe
start " " %pfadzurexe%
edit: start und Anführungszeichen vergessen
Gruß
Christian
Zitat von @fireskyer:
Startup Script geht nicht ... schon ausprobiert .. anscheinend ist der Estos Client im Hintergrund schon aktiv. Sonst würde es ja ausreichen nur die Databases.xml zu löschen.
Nö, hier gerade per Replace über GPP erfolgreich ersetzt, und der ESTOS-Client hat es problemlos übernommen.Startup Script geht nicht ... schon ausprobiert .. anscheinend ist der Estos Client im Hintergrund schon aktiv. Sonst würde es ja ausreichen nur die Databases.xml zu löschen.
Kann ich so auch bestätigen. Wird sicherlich ein Fehler in der GPO/Script gewesen sein so wie ich das hier sehe.
also ganz trivial die einzelnen möglichen exe Pfade durch exerzieren.
Wie gesagt ist das Blödsinn wenn du den Pfad entweder schon korrekt aus der Registry erhältst oder dir auch aus der Prozessliste mit tasklist extrahieren kannst.Alles andere ist dümmstes Batch-Anfänger Prozedere das ich mir garnicht nicht anziehen würde.
Denn was wäre wenn ProCall in einem ganz anderen Verzeichnis installiert wäre das du nicht kennst?! Genau, dann würde dein Skript dort gegen die Wand laufen .
Was meinst du mit Replace ? Vorher gelöscht ?
"Aktualisieren."