Warum windows den Befehl "START" nicht mit Leerzeichen in den Argumenten UND den Pfad?
Dieser Befehl funktioniert
START /b /wait "Dummy title" "C:\tmp\test runner2.bat" arg1 arg2
Aber beides schlägt fehl!
START /b /wait "Dummy title" "C:\tmp\test runner2.bat" arg1 arg2 "arg 3" arg4
START /b /wait "Dummy title" "C:\tmp\test runner2.bat" arg1 arg2 "arg 3"
Der Fehler ist:
'C:\tmp\test' is not recognized as an internal or external command, operable program or batch file.
Natürlich, es hat etwas zu tun mit "
Umgebungen die Argumente, aber warum und wie kann ich dies umgehen?
Fragen:
- Wie erstellen Sie die batch-Datei in Windows mit "start" mit einem Pfad und Befehl mit Leerzeichen
- Kann ich die "start" - Befehl mit Leerzeichen im Pfad?
- Funktioniert es ohne starten?
"C:\tmp\test runner2.bat" arg1 arg2 "arg 3" arg4
- Ja, es funktioniert, werde ich wohl verwenden, als ein workaround aber keine Antwort auf meine Frage. Trotzdem danke.
- Verwenden
call
, nichtstart
, für die Ausführung von batch-Skripts von anderen batch-Skripten. - Das wird nicht die Rückkehr zu der aufrufenden Skript.
- Ich war einfach herauszufinden versuchte, ob der Befehl funktioniert oder nicht. Wenn es nicht so ist, sind die Chancen, dass es nicht funktionieren würde mit
start
odercall
oder was auch immer. - Es funktioniert mit
call
. - Was ist, wenn der Befehl nicht ein batch-Skript (aber ein .exe-Datei)? Dann
CALL
wird nicht funktionieren, richtig? Ich habe es noch nicht getestet, aber ich würde davon ausgehen, dass die ursprüngliche Frage würde bleiben, selbst wenn das der Fall wäre?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist ein bekannt bug des START-Befehls.
Wenn Sie Leerzeichen in der beide, der Befehl und die Parameter und versuchen Sie, handhaben Sie Sie mit Anführungszeichen, es schlägt fehl.
Zunächst der START-Befehl überprüfen, wenn der volle Befehl vorhanden ist.
Aber dann beginnt es erst der erste Teil.
In deinem Fall sieht es für
"C:\tmp\test runner2.bat"
aber versuchen zu startenC:\tmp\test
.Können Sie vermeiden, wenn es der Befehl ist ersetzt durch eine
CALL
Den
START
verwendetcmd /k
zu Beginn des neuen Prozesses.Und das ist die Ursache für das Fehlverhalten.
Paul Groke die Tatsache erwähnt, dass dies nur aufgetreten ist, wenn es eine batch-Datei.
Exe
Dateien werden direkt ausgeführt und so sind Sie nicht betroffen von der cmd.exe bug.In Ihrem Fall
Und der Hilfe von
cmd /k
undcmd /c
erklärt, dass in diesem Fall das erste und Letzte Zitat entfernt.start
wird verwendet, um eine batch-Datei auszuführen. Wenn das start-dient zum starten eines.exe
, dieses problem ist nicht auftreten."Jeb" schon in die richtige Richtung. In meinem Fall habe ich nicht versucht, führen Sie ein batch -, sondern ein Programm in den "Programme" - Ordner (charge erlischt nach dem starten des Programms). Beim Aufruf
den Pfad eingegeben mit Anführungszeichen eingeschlossen sein soll, die "Titel" - parameter durch den Befehl "START". Um loszuwerden, dass Sie haben, um "fake" - Fenster Titel:
Das half in meinem Fall.
Diese keine Antwort auf meine Frage, aber es hat lösen das unmittelbare problem, das ich habe.
Beim Lesen durch die "Problem mit Anführungszeichen um Dateinamen in den Windows-Befehls-shell"-post entdeckte ich einen workaround:
Gibt es auch die andere Problemumgehung, indem Sie einfach den Befehl ausführt, mit der
call
Befehl statt (wie bereits von Ansgar Wiechers)