fireskyer
Goto Top

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.

:: ######## 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

Content-Key: 328689

Url: https://administrator.de/contentid/328689

Printed on: April 25, 2024 at 04:04 o'clock

Member: Meierjo
Meierjo Feb 07, 2017 at 14:24:13 (UTC)
Goto Top
Hallo

Mal ne andere Frage, wieso musst due den Estos-Client neu starten? Wir arbeiten seit X-Jahren fehlerfrei mit dieser Software

Gruss
Member: fireskyer
fireskyer Feb 07, 2017 at 14:53:35 (UTC)
Goto Top
Weil ich die Datenquellen Zentral setzen will, und bei einer Änderung die Databases.xml nur einmal neu erstellt wird, da abgefragt wird bei jedem Estos neustart ob sie vorhanden ist.

Deslhab muss diese neu erstellt werden.


gruss
Member: Kraemer
Kraemer Feb 07, 2017 at 14:53:35 (UTC)
Goto Top
Warum machst du das nicht einfach so?

IF  EXIST "%programfiles%\ESTOS\ProCall 4\ECtiClient.exe" "%programfiles%\ESTOS\ProCall 4\ECtiClient.exe"   

Gruß Krämer
Member: fireskyer
fireskyer Feb 07, 2017 at 15:02:40 (UTC)
Goto Top
So frage ich doch nur eine Condition ab oder ?
gruss
Member: Kraemer
Kraemer Feb 07, 2017 at 15:07:29 (UTC)
Goto Top
Zitat von @fireskyer:

So frage ich doch nur eine Condition ab oder ?
gruss
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
Mitglied: 132272
132272 Feb 07, 2017 updated at 15:14:41 (UTC)
Goto Top
Ich würde optimalerweise den Pfad zum Installationspfad von Estos direkt aus der Registry (reg query) abfragen...so macht man das normalerweise.

Gruß
Member: fireskyer
fireskyer Feb 07, 2017 at 15:16:19 (UTC)
Goto Top
ah okay das kannte ich noch nicht ...

und wie würde ich eine zweite condition einfügen wenn die erste nicht greift so vielleicht ?:

IF EXIST "%programfiles%\ESTOS\ProCall 4\ECtiClient.exe" "%programfiles%\ESTOS\ProCall 4\ECtiClient.exe"
else
IF EXIST "%programfiles%\ESTOS\ProCall 5\ECtiClient.exe" "%programfiles%\ESTOS\ProCall 5\ECtiClient.exe

grüsse
Mitglied: 132272
132272 Feb 07, 2017 updated at 15:19:37 (UTC)
Goto Top
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
Member: Kraemer
Kraemer Feb 07, 2017 at 15:19:27 (UTC)
Goto Top
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 face-wink

Gruß Krämer
Mitglied: 132272
132272 Feb 07, 2017 updated at 15:23:23 (UTC)
Goto Top
Zitat von @Kraemer:

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 face-wink
Klar, ich meinte damit nur die Vorgehensweise wenn einem ein Pfad einer Anwendung unbekannt ist ;-P anstatt alles durchzuprobieren.
Member: Meierjo
Meierjo Feb 07, 2017 at 17:25:36 (UTC)
Goto Top
Hallo


Ich würde einfach den vom Hersteller vorgegebenen Weg gehen face-wink

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
Member: angelernter
angelernter Feb 08, 2017 updated at 08:12:33 (UTC)
Goto Top
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:
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
Member: fireskyer
fireskyer Feb 08, 2017 at 10:23:03 (UTC)
Goto Top
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.

gruss
Member: angelernter
angelernter Feb 08, 2017 updated at 10:48:11 (UTC)
Goto Top
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:

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
Mitglied: 132272
132272 Feb 08, 2017 updated at 11:18:38 (UTC)
Goto Top
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.
Member: Meierjo
Meierjo Feb 08, 2017 updated at 14:53:02 (UTC)
Goto Top
Hallo

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 nicht sein, dass der Estos Client beim booten schon aktiv ist

Gruss
Mitglied: 132272
132272 Feb 08, 2017 updated at 15:10:02 (UTC)
Goto Top
Zitat von @Meierjo:
Kann nicht sein, dass der Estos Client beim booten schon aktiv ist
Kann ich so auch bestätigen. Wird sicherlich ein Fehler in der GPO/Script gewesen sein so wie ich das hier sehe.
Member: fireskyer
fireskyer Feb 09, 2017 at 07:23:33 (UTC)
Goto Top
Also unser Systemhaus ( das sich doch relativ gut auskennt die haben den SalesForce-Connector für Pro Call geschrieben ) konnte dieses seltsame Verhalten bestätigen.

Aber zzt. hat er sich die eine neue Databases.xml gezogen .. solange man nichts dran machen muss isses vorläufig i.o ... aber auf Dauer keine Lösung .

Danke für alle für die hilfreichen Anregungen

Ich werde mir das alles mal in ner ruhigen Minute anschauen ...

Danke euch ...

Aber mich würde es schon interessieren, wie ich das mit der IF Schleife bewerkstelligt hätte ... also ganz trivial die einzelnen möglichen exe Pfade durch exerzieren.

grüsse
Mitglied: 132272
132272 Feb 09, 2017 updated at 07:29:11 (UTC)
Goto Top
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 face-wink.
Member: fireskyer
fireskyer Feb 09, 2017 at 07:31:06 (UTC)
Goto Top
@nachfrage

Komisch ... vielleicht ist mit dem Zusammenspiel mit SF-Connector ... da müßte ich doch nochmal nachhaken.
Wie gesagt ein Mitarbeiter konnte das Verhalten bestätigen ( natürlich repliziert und die GP's erzwungen mit Force).. RSOP.MSC sagt auch das es gezogen wird.

Was meinst du mit Replace ? Vorher gelöscht ?

grüsse
Mitglied: 132272
132272 Feb 09, 2017 at 07:33:12 (UTC)
Goto Top
Was meinst du mit Replace ? Vorher gelöscht ?
"Aktualisieren."