Verwenden des Befehls "start" mit Parametern, die an das gestartete Programm übergeben werden

223

Ich habe eine virtuelle Maschine in Virtual PC 2007.

Um es vom Desktop aus zu starten, habe ich den folgenden Befehl in einer Batch-Datei:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

Dadurch bleibt jedoch eine Eingabeaufforderung auf dem Host-Computer, bis der virtuelle Computer heruntergefahren wird und ich die Virtual PC-Konsole verlasse. Das nervt.

Also habe ich meinen Befehl geändert, um stattdessen den Befehl START zu verwenden:

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

Die an Virtual PC übergebenen Parameter werden jedoch erstickt.

START /?zeigt an, dass sich die Parameter tatsächlich an dieser Stelle befinden. Hat jemand START verwendet, um ein Programm mit mehreren Befehlszeilenargumenten zu starten?

JosephStyons
quelle

Antworten:

466

START hat eine Besonderheit, bei der der erste Parameter in doppelte Anführungszeichen gesetzt wird. Wenn der erste Parameter doppelte Anführungszeichen hat, wird dieser als optionaler TITEL für das neue Fenster verwendet.

Ich glaube, was Sie wollen, ist:

start "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

Mit anderen Worten, geben Sie ihm einen leeren Titel vor dem Namen des Programms, um ihn zu fälschen.

Tim Farley
quelle
2
Ist das veraltet? In Win 7 bekomme ichStart-Process : Cannot validate argument on parameter 'FilePath'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again
Geotheory
1
Wer hätte das gedacht. Nur die Anzahl der Upvotes zu Ihrer Antwort sollte für Microsoft Grund genug sein, diese „Besonderheit“ zu beheben.
Piyush Soni
7
@geotheory Mir ist klar, dass dies ein alter Kommentar ist, aber in PowerShell ist start ein Alias ​​für Start-Process. In cmd.exe (etwas veraltet, aber nicht veraltet) ist "start" anders. Beide sind zum Starten anderer Prozesse gedacht, aber start ist ein alter eingebetteter Befehl in cmd.
Adam Plocher
Das bereitete mir große Kopfschmerzen. Danke für die Lösung!
Uceumern
15

Anstelle einer Batchdatei können Sie eine Verknüpfung auf dem Desktop erstellen.

Setzen Sie das Ziel auf:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

und du bist fertig. Da Sie keine Eingabeaufforderung zum Starten starten, gibt es keine DOS-Box.

Ferruccio
quelle
3

Die Leerzeichen sind DOS- / CMD-Probleme, daher sollten Sie zum Pfad gehen über:

cd "c:\program files\Microsoft Virtual PC"

und starten Sie dann einfach VPC über:

start Virtual~1.exe -pc MY-PC -launch

~1bedeutet das erste exemit "Virtual"am Anfang. Wenn es also ein "Virtual PC.exe"und ein gibt, ist "Virtual PC1.exe"das erste das Virtual~1.exeund das zweite Virtual~2.exeund so weiter.

Oder verwenden Sie einen VNC-Client wie VirtualBox.

Ghostdog21
quelle
1
Dies scheint eine vernünftige Lösung zu sein, geht jedoch nicht wirklich auf das zugrunde liegende Problem ein, das durch die akzeptierte Antwort abgedeckt wird.
Sam
1
Dies funktioniert nicht, wenn kurze Dateinamen nicht aktiviert sind. Ich deaktiviere immer 8.3 Dateinamen in meinen Systemen
phuclv
1

Keine dieser Antworten hat bei mir funktioniert.

Stattdessen musste ich den Call-Befehl verwenden:

Call "\\Path To Program\Program.exe" <parameters>

Ich bin mir nicht sicher, ob dies tatsächlich auf den Abschluss wartet ... das von mir installierte C ++ Redistributable ging schnell genug, dass es keine Rolle spielte

JustAnotherMikhail
quelle
@rene danke für die Bearbeitung. Wenn ich weitere Antworten hinzufüge, werde ich sicher das Codeblockformat verwenden
JustAnotherMikhail
0

Die Antwort in "Besonderheit" ist richtig und beantwortet die Frage direkt. Wie TimF antwortete, wird der erste Parameter, da er in Anführungszeichen steht, als Fenstertitel behandelt.

Beachten Sie auch, dass die Virtual PC-Optionen als Optionen für den Befehl 'start' selbst behandelt werden und für 'start' nicht gültig sind. Dies gilt für alle Windows-Versionen mit dem Befehl 'start'.

Dieses Problem mit 'start', bei dem der angegebene Parameter als Titel behandelt wird, ist noch ärgerlicher als nur das veröffentlichte Problem. Wenn Sie dies ausführen:

start "some valid command with spaces"

Sie erhalten ein neues Eingabeaufforderungsfenster mit dem offensichtlichen Ergebnis für einen Fenstertitel. Noch ärgerlicher ist, dass dieses neue Fenster keine benutzerdefinierten Schriftarten, Farben oder Fenstergrößen erbt, sondern nur die Standardeinstellung für cmd.exe.

BitDreamer
quelle
0

Wenn Sie den Parameter und Ihre EXE-Datei im Testordner von c: drive übergeben möchten

start "parameter" "C:\test\test1.exe" -pc My Name-PC -launch

Wenn Sie den Parameter und Ihre EXE-Datei nicht im Testordner von c: drive übergeben möchten

start "" "C:\test\test1.exe" -pc My Name-PC -launch

Wenn Sie den Parameter und Ihre EXE-Datei nicht im Testordner des Laufwerks H: (Any Other) übergeben möchten

start "" "H:\test\test1.exe" -pc My Name-PC -launch

Mack
quelle
0

Wenn Sie bei einem Parameter ein doppeltes Anführungszeichen verwenden müssen, wird die Fehlermeldung "'c: \ somepath' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt" angezeigt. Ich schlage die folgende Lösung vor, wenn Sie ein doppeltes Qoutationszeichen verwenden: https://stackoverflow.com/a/43467194/3835640

Mustafa Kemal
quelle
0

Sie können Anführungszeichen verwenden, indem Sie mit [ /D"Path"] /D nur den Pfad und nicht das Programm path + angeben. Es scheint, dass der gesamte Code in derselben Zeile zur Normalität zurückkehrt, was bedeutet, dass Sie Pfad und Datei nicht trennen müssen.

    start  /D "C:\Program Files\Internet Explorer\" IEXPLORE.EXE

oder:

    start  /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE

startet den IE mit der Standardwebseite.

    start  /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE www.bing.com

Beginnt mit Bing, setzt Ihre Homepage jedoch nicht zurück.

/D steht für "Verzeichnis" und die Verwendung von Anführungszeichen ist in Ordnung!

FALSCHES BEISPIEL:

    start  /D "TITLE" "C:\Program Files\Internet Explorer\IEXPLORE.EXE"

gibt:

FEHLER " Das aktuelle Verzeichnis ist ungültig. "

/Ddarf nur von einem Verzeichnispfad gefolgt werden. Dann Speicherplatz und die Batchdatei oder das Programm, das / das Sie starten / ausführen möchten

Getestet und funktioniert unter XP, aber Windows Vista / 7/8 muss möglicherweise einige Anpassungen an der Benutzerkontensteuerung vornehmen.

-Mrbios

Mrbios
quelle
-1

/b Parameter

start /b "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch
T.Todua
quelle
Was macht dieser Parameter?
Azeezah M
3
@AzeezahM / b bedeutet, dass kein neues cmd-Fenster geöffnet wird. Dies beantwortet jedoch nicht die Frage von op.
Aclave1
-4

Hast du es versucht:

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" "-pc MY-PC -launch"

?

Albertein
quelle
-4

Fügen Sie den Befehl in eine Batch-Datei ein und rufen Sie ihn mit den Parametern auf.

Hast du das auch schon versucht? (Verschieben Sie das Endzitat, um die Parameter zu kapseln.)

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe -pc MY-PC -launch"
Mark Allen
quelle
-4

Ändern Sie die "Virtual PC.exe" in einen Namen ohne Leerzeichen wie "VirtualPC.exe" im Ordner. Wenn Sie start "path"mit "" schreiben, startet das CMD ein neues cmd-Fenster mit dem Pfad als Titel. Ändern Sie den Namen in einen Namen ohne Leerzeichen, schreiben Sie diesen in den Editor und speichern Sie ihn anschließend wie Name.cmd oder Name.bat:

CD\
CD Program Files
CD Microsoft Virtual PC
start VirtualPC.exe
timeout 2
exit

Dieser Befehl leitet das CMD in den Ordner um, startet die VirualPC.exe, wartet 2 Sekunden und beendet das Programm.

Rafael Pereira
quelle
1
Was passiert, wenn die Software aktualisiert wird? Plötzlich hast du eine verwaiste virtualpc.exe.
Michael Beck