So erstellen Sie eine Batchdatei in Windows mithilfe von "Start" mit einem Pfad und einem Befehl mit Leerzeichen

78

Ich muss eine Batch-Datei erstellen, die mehrere Konsolenanwendungen in einer Windows-CMD-Datei startet. Dies kann mit dem Befehl start erfolgen.

Der Befehl enthält jedoch einen Pfad. Ich muss auch Parameter übergeben, die ebenfalls Leerzeichen haben. Wie macht man das?

ZB Batch-Datei

start "c:\path with spaces\app.exe" param1 "param with spaces"

quelle

Antworten:

165

Eigentlich wird sein Beispiel nicht funktionieren (obwohl ich zuerst dachte, dass es auch funktionieren würde). Basierend auf der Hilfe für den Befehl Start ist der erste Parameter der Name des neu erstellten Eingabeaufforderungsfensters, und der zweite und dritte sollten der Pfad zur Anwendung bzw. ihren Parametern sein. Wenn Sie der App vor dem Pfad ein weiteres "" hinzufügen, sollte dies funktionieren (zumindest für mich). Verwenden Sie so etwas:

start "" "c:\path with spaces\app.exe" param1 "param with spaces"

Sie können das erste Argument so ändern, dass es den Titel der neuen Eingabeaufforderung enthält. Wenn eine Windows-App erstellt wird, wird die Eingabeaufforderung nicht angezeigt und der Titel spielt keine Rolle.

Andy
quelle
Es scheint, dass der Fenstertitel obligatorisch ist, obwohl es im Internet viele Dokumentationen gibt, in denen etwas anderes angegeben ist. Ignorieren Sie diese Dokumentation. Folgen Sie Andys Vorschlag.
Corin
Wenn ich einen Windows-Anwendungsbefehl über eine interaktive Datei eingebe, wird die Anwendung im Hintergrund gestartet und es wird eine neue Eingabeaufforderung angezeigt. Wenn ich denselben Befehl über ein Batch-Skript ausführe, wird die Anwendung im Vordergrund gestartet. Mein Batch-Skript stoppt, bis ich die App beende. Eek! Ich habe lange versucht, start zu verwenden, um meine App im Hintergrund auszuführen, aber start /B "app"es hat nicht funktioniert und start cmd /C "app"mir eine externe Konsole gegeben. Vielen Dank!! Endlich habe ich erfahren, dass ich einen Fenstertitel für meinen Start ohne Fenster benötige. Dies funktioniert: start /B "" "app"
Keith Robertson
Vielen Dank! Der Fall ist auch bei /waitangegebenem Parameter aktuell ! start /wait "%CDir%\cron.exe" -q -removefunktioniert nicht, solange es start "" /wait "%CDir%\cron.exe" -q -removefunktioniert.
Fr0sT
Wenn ich Ihre Antwort später gefunden hätte, könnte es meinen Tag retten ((. Aber trotzdem danke!
Denis Petrov
15

Es ist korrekt, den Pfad mit Apostrophen zu umgehen, aber der Befehl start verwendet einen Parameter, der den Titel des neuen Fensters enthält. Dieser Parameter wird von den umgebenden Apostrophen erkannt, sodass Ihre Anwendung nicht ausgeführt wird.

Versuchen Sie so etwas:

start "Dummy Title" "c:\path with spaces\app.exe" param1 "param with spaces"
Steffen
quelle
2
start "" "c:\path with spaces\app.exe" "C:\path parameter\param.exe"

Als ich den obigen Vorschlag verwendet habe, habe ich:

'c: \ path' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt.

Ich denke, das zweite Qoutationszeichen verhindert, dass der Befehl ausgeführt wird. Nach einiger Suche unten Lösung rette meinen Tag:

start "" CALL "c:\path with spaces\app.exe" "C:\path parameter\param.exe"
Mustafa Kemal
quelle
Erstellen Sie eine leere Datei test 2.batund erstellen Sie dann eine Datei test1.batmit den folgenden Angaben: START "Test title" "test 2.bat" %*- Jetzt ausführen test1.bat "param 1"und es funktioniert nicht. Warum?
ale5000
1

Interessanterweise können Sie in Windows Embedded Compact 7 keine Titelzeichenfolge angeben. Der erste Parameter muss der Befehl oder das Programm sein.

Markieren Sie Achat
quelle
0

Sie sollen so etwas verwenden:

start / d C: \ Windows \ System32 \ calc.exe

start / d "C: \ Programme \ Mozilla

Firefox "fireoxox.exe start / d

"C: \ Programme \ Microsoft

Office \ Office12 "EXCEL.EXE

Außerdem rate ich Ihnen, einen speziellen Batch-Datei-Editor zu verwenden - Dr.Batcher

user243871
quelle
-1

Umgeben des Pfads und des Arguments mit Leerzeichen in Anführungszeichen, wie in Ihrem Beispiel. Der Befehl muss möglicherweise die Anführungszeichen verarbeiten, wenn die Parameter an ihn übergeben werden, ist jedoch normalerweise keine große Sache.

Curro
quelle
-1

Ich habe erfolgreich recherchiert und es funktioniert gut für mich. Meine Anforderung besteht darin, eine E-Mail mit vbscript zu senden, die aus einer Batchdatei in Windows aufgerufen werden muss. Hier ist der genaue Befehl, den ich ohne Fehler verwende.

START C:\Windows\System32\cscript.exe "C:\Documents and Settings\akapoor\Desktop\Mail.vbs"
Anupam Kapoor
quelle
Das ist falsch. Du kannst schreiben START "" "C:\Documents and Settings\akapoor\Desktop\Mail.vbs". Ihr Code funktioniert nur, weil vbs eine Erweiterung ist, die beim "Starten" aufgelöst wird. Versuchen Sie, notepad.exe mit dem Pfad aufzurufen. Dies funktioniert nicht. Das Skript wird immer ausgeführt.
Samuel