Batch Dateien: Pfad-Angaben mit Leerzeichen

Ich bleibe dabei: Die immer wieder todgeglaubte Batch-Datei ist nach wie vor elementarer Bestandteil vieler Computersysteme. Vergleichbar mit der altbekannten ini-Datei, die ihre Daseinsberechtigung nach wie vor gegen die Registry erkämpft, sind selbst heute noch kleine und große Batch-Files bei Produkten von Microsoft oder namhaften Fremdherstellern elementares Werkzeug.

Ein weiteres beliebtes Mittel ist die Batch-Datei bei einer Ablaufsteuerung von mehreren Jobs. Wenn diese zwingend hintereinander ausgeführt werden sollen, aber zeitlich nicht genau bestimmbar ist, wann ein Job endet, ist eine Lösung über den Task-Manager nur zweite Wahl. Es kann programmtechnisch sichergestellt werden, dass zwei Jobs nicht gleichzeitig ablaufen, doch der Aufwand ist wesentlich größer als eine separate Batch-Datei, die die Steuerung übernimmt.

Basis einer solchen Steuerung ist der Batch-Befehl „start /wait [Pfadangabe]“. Ein Batch-Programm, das einen Job mit dem Parameter „/wait“ startet, wartet an der Stelle mit der weiteren Ausführung, bis das auszuführende Programm geschlossen, also beendet wird.

Nachprüfen kann man das unter Windwos schnell wie folgt. Legen Sie eine Textdatei an und geben Sie die folgenden Befehle ein:

@echo off

echo Start des ersten Programmes ...
start /wait notepad.exe

echo Start des zweiten Programmes ...
start /wait notepad.exe

pause

Speichern Sie die Datei unter beliebigen Namen und ändern Sie die Dateiendung in „.bat“ oder „.cmd“. Wenn Sie das Programm mit Doppelklick ausführen, wird sich eine Commandbox mit dem Hinweis „Start des ersten Programmes …“ öffnen. Gleichzeitig öffnet sich Notepad. Wenn wir Notepad nun schließen, erscheint in der Command-Box „Start des zweiten Programmes  …“ und Notepad erscheint durch den zweiten Aufruf erneut. Wir sehen also, dass die Command auf das Ende des gestarteten Programmes wartet.
Durch diesen Aufbau ist nun eine Jobliste möglich, die hintereinander abgearbeitet werden muss. Die Command selbst kann durch Doppelklick, durch den Autostart-Ordner oder durch einen Aufruf in der Scheduled-Task-Liste gestartet werden.

Problemfall Datei-Aufruf: Pfad-Angabe mit Leerzeichen
Bei den folgenden Beispiele werden Sie auf den Problemfall Leerstelle in Pfadangaben stoßen. Ein beliebter Ordner ist der „Dokumente und Einstellungen“ –  Ordner, der bedingt durch zwei Leerstellen sofort zu Probleme führt:

@echo off

REM klappt
start /wait c:ordner1datei.bat

REM klappt auch
start /wait C:ordner1ordner2datei.bat

REM klappt nicht
start /wait C:ordner mit leerstelledatei.bat

REM klappt auch nicht
start /wait "C:ordner mit leerstelledatei.bat"

REM klappt auch nicht
start /wait 'C:ordner mit leerstelledatei.bat'

Wie also mit Pfadangaben umgehen, in denen Leerzeichen enthalten sind? Die Pfadangabe muss in einer Variablen zwischengespeichert werden, dann funktioniert auch der Aufruf, wie das folgende Beispiel demonstriert:

@echo off

%str%="C:Dokumente und Einstellungendatei.bat"
start /wait %str%

pause

1 Gedanke zu „Batch Dateien: Pfad-Angaben mit Leerzeichen“

Schreibe einen Kommentar