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

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: Meierjo
Meierjo 07.02.2017 um 15:24:13 Uhr
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
Mitglied: fireskyer
fireskyer 07.02.2017 um 15:53:35 Uhr
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
Mitglied: Kraemer
Kraemer 07.02.2017 um 15:53:35 Uhr
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
Mitglied: fireskyer
fireskyer 07.02.2017 um 16:02:40 Uhr
Goto Top
So frage ich doch nur eine Condition ab oder ?
gruss
Mitglied: Kraemer
Kraemer 07.02.2017 um 16:07:29 Uhr
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 07.02.2017 aktualisiert um 16:14:41 Uhr
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ß
Mitglied: fireskyer
fireskyer 07.02.2017 um 16:16:19 Uhr
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 07.02.2017 aktualisiert um 16:19:37 Uhr
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
Mitglied: Kraemer
Kraemer 07.02.2017 um 16:19:27 Uhr
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 07.02.2017 aktualisiert um 16:23:23 Uhr
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.
Mitglied: Meierjo
Meierjo 07.02.2017 um 18:25:36 Uhr
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
Mitglied: angelernter
angelernter 08.02.2017 aktualisiert um 09:12:33 Uhr
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
Mitglied: fireskyer
fireskyer 08.02.2017 um 11:23:03 Uhr
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
Mitglied: angelernter
angelernter 08.02.2017 aktualisiert um 11:48:11 Uhr
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 08.02.2017 aktualisiert um 12:18:38 Uhr
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.
Mitglied: Meierjo
Meierjo 08.02.2017 aktualisiert um 15:53:02 Uhr
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 08.02.2017 aktualisiert um 16:10:02 Uhr
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.
Mitglied: fireskyer
fireskyer 09.02.2017 um 08:23:33 Uhr
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 09.02.2017 aktualisiert um 08:29:11 Uhr
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.
Mitglied: fireskyer
fireskyer 09.02.2017 um 08:31:06 Uhr
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 09.02.2017 um 08:33:12 Uhr
Goto Top
Was meinst du mit Replace ? Vorher gelöscht ?
"Aktualisieren."