joni2000de
Goto Top

Batch erst nach Abschluss eines Prozesses fortsetzen

Hallo Admins,

gibt es eine Möglichkeit die Ausführung einer Batchdatei solange anzuhalten, bis ein von der Datei ausgelöster Prozess (start einer "fremden" exe auf die ich keinen Einfluss habe) beendet ist? Die Pause mit einem Zeitintervall zu definieren geht nicht, da der Prozess 5 Sekunden aber auch 20 Minuten dauern kann. Immer 20 Minuten zu warten ist nicht zielführend.

Danke für eure Hilfe.

Gruß Joni

Content-Key: 128447

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

Printed on: April 24, 2024 at 14:04 o'clock

Member: Miyamoto
Miyamoto Nov 02, 2009 at 12:27:28 (UTC)
Goto Top
Hi,
ja gibt es mit
start /wait regedit
das Programm läuft weiter wenn regedit Beendetworden ist
Member: miniversum
miniversum Nov 02, 2009 at 12:30:46 (UTC)
Goto Top
Was heißt Du hast keinen einfluss auf die "fremde" exe Datei?
Kannst du die Exe nicht direkt aus der Batch heraus starten?

Die alternative wäre das du im Abstand von meheren Sekunden immer wieder Tasklist abrufst und mit find darin schaust ob der Prozess der Exe noch läuft. Die Schleife läuft dann bis die exe beendet ist.
Member: joni2000de
joni2000de Nov 02, 2009 at 13:15:53 (UTC)
Goto Top
Das mit start /wait funktioniert nicht. Da wird das Ende nicht abgewartet.

Wie kann ich die Taskliste abrufen und auf den Prozess prüfen?

Kannst du mir hier helfen?

Danke
Joni
Member: miniversum
miniversum Nov 02, 2009 at 16:25:18 (UTC)
Goto Top
Machs mal ohne Start. einfach nur die Exe, also so:
notepad.exe datei.txt
Ansonsten mit Prüfung alle 10s so (ungetestet):
notepad.exe
:loop
tasklist|findstr /i "notepad.exe">NUL && (ping -n 10 localhost>NUL & goto:loop)  
Member: joni2000de
joni2000de Nov 02, 2009 at 18:16:36 (UTC)
Goto Top
Das hat funktioniert!

Jetzt stehe ich noch vor einem anderen Problem. Der Task läuft auf einem Terminalserver. Da muss ich den Benutzer mit angeben. Klappt soweit auch. Doch wir haben auch Benutzernamen mit Umlauten. Diese werden nicht richtig übergeben. Ich habe auch schon die Codepage auf 1252 umstellt (850 ist eingestellt), doch das hilft auch nichts (bzw. die Änderung ist in die Richtung, dass auch im OS die Umlaute nicht mehr richtig angezeigt werden). Mit diesem Thema kämpfe ich immer wieder mal. Hast du mir hier vielleicht auch noch einen Tipp.

Danke

Gruß Joni
Member: miniversum
miniversum Nov 02, 2009 at 18:27:52 (UTC)
Goto Top
benutze edit.com. dann siehst du welche zeichen den umlauten entsprechen
Member: joni2000de
joni2000de Nov 02, 2009 at 18:38:56 (UTC)
Goto Top
Das weiß ich. beim ä ist es das o mit Tilde. Doch das kann ich nicht erzeugen. Ich muss den Wert ja irgendwie in das Batchfile schreiben.

Sprich
Username auslesen
"falsche" Zeichen durch "richtige Zeichen ersetzen (auch wenn es in der Batchdatei dann falsch aussieht)
Batchdatei ausführen
Inhalt der Batchdatei dann richtig verstehen

Irgendwie finde ich hier die Lösung nicht. Egal was ich umstelle, ein Teil passt trotzdem nicht.

Joni
Member: miniversum
miniversum Nov 02, 2009 at 19:00:35 (UTC)
Goto Top
Nein es ist gerade umgekehrt. ein ä sieht im Batch dann wie ein o mit tilde aus. damit du ein ä siehst must du „ angeben.
Ausführlich gesagt, machs so:
1. erstelle eine Batchdatei die den Benutzernamen ausliest.
2. erstelle die Befehle zum ändern der Sonderzeichen in der batch.
3. speichere die batchdatei
4. öffne die batch datei mit edit.com
5. setze dort für die zu ändernden Zeichen die Sonderzeichen ein.

Das sieht dann ungefär so aus:
set name=%username:ä=„
halt mit allen Sonderzeichen.
Member: joni2000de
joni2000de Nov 05, 2009 at 18:40:27 (UTC)
Goto Top
Hi,

das hat funktioniert, ich muss er nur noch richtig in den Code einbauen.

Danke

Gruß Joni