Utilizzo del comando "start" con i parametri passati al programma avviato


224

Ho una macchina virtuale in Virtual PC 2007.

Per avviarlo dal desktop, ho il seguente comando in un file batch:

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

Ma questo lascia un prompt dos sulla macchina host fino a quando la macchina virtuale non si spegne e non esco dalla console di Virtual PC. Questo è fastidioso.

Quindi ho modificato il mio comando per utilizzare il comando START, invece:

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

Ma soffoca sui parametri passati in Virtual PC.

START /?indica che i parametri effettivamente vanno in quella posizione. Qualcuno ha usato START per avviare un programma con più argomenti da riga di comando?

Risposte:


467

START ha una peculiarità che coinvolge virgolette doppie attorno al primo parametro. Se il primo parametro ha virgolette doppie, lo utilizza come TITOLO facoltativo per la nuova finestra.

Credo che quello che vuoi sia:

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

In altre parole, assegnagli un titolo vuoto prima del nome del programma per falsificarlo.


2
Questo è deprecato? In Win 7 ottengoStart-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 il

1
Chi avrebbe mai immaginato. Solo il numero di voti positivi per la tua risposta dovrebbe essere un motivo sufficiente per Microsoft per correggere questa "peculiarità".
Piyush Soni,

7
@geotheory Mi rendo conto che questo è un vecchio commento, ma in PowerShell start è un alias per Start-Process. In cmd.exe (un po 'antiquato, ma non deprecato) "start" è diverso. Entrambi sono pensati per l'avvio di altri processi, ma start è un vecchio comando incorporato in cmd.
Adam Plocher,

Questo mi ha causato molto mal di testa. Grazie per la soluzione!
Uceumern,

15

Invece di un file batch, è possibile creare un collegamento sul desktop.

Imposta l'obiettivo su:

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

e sei pronto. Dal momento che non si avvia un prompt dei comandi per avviarlo, non ci sarà DOS Box.


3

Gli spazi sono problemi DOS / CMD, quindi dovresti andare al percorso tramite:

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

e quindi semplicemente avviare VPC tramite:

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

~1significa il primo execon "Virtual"all'inizio. Quindi se c'è un "Virtual PC.exe"e "Virtual PC1.exe"il primo sarebbe il Virtual~1.exee il secondo Virtual~2.exee così via.

Oppure usa un client VNC come VirtualBox.


1
Sembra una soluzione ragionevole, ma in realtà non affronta il problema di fondo, che è coperto dalla risposta accettata.
Sam,

1
questo non funzionerà se i nomi di file brevi non sono abilitati. Disattivo sempre i nomi dei file 8.3 nei miei sistemi
phuclv,

1

Nessuna di queste risposte ha funzionato per me.

Invece, ho dovuto usare il comando Chiama:

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

Non sono sicuro che questo in realtà aspetti il ​​completamento ... il ridistribuibile C ++ che stavo installando è andato abbastanza veloce da non importare


@rene grazie per la modifica. Se aggiungo altre risposte, sarò sicuro di utilizzare il formato del blocco di codice
JustAnotherMikhail

0

La risposta in "peculiarità" è corretta e risponde direttamente alla domanda. Come ha risposto TimF, poiché il primo parametro è tra virgolette, viene trattato come un titolo di finestra.

Si noti inoltre che le opzioni di Virtual PC vengono trattate come opzioni per il comando 'start' stesso e non sono valide per 'start'. Questo è vero per tutte le versioni di Windows che hanno il comando 'start'.

Questo problema con "start" tratta il parametro citato come un titolo è ancora più fastidioso che solo il problema pubblicato. Se esegui questo:

start "some valid command with spaces"

Si ottiene una nuova finestra del prompt dei comandi, con il risultato ovvio per un titolo di finestra. Ancora più fastidioso, questa nuova finestra non eredita caratteri personalizzati, colori o dimensioni della finestra, è solo l'impostazione predefinita per cmd.exe.


0

Se si desidera passare il parametro e il file .exe nella cartella test di c: drive

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

Se non vuoi passare il parametro e il tuo file .exe nella cartella test di c: drive

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

Se non desideri passare il parametro e il tuo file .exe nella cartella di test dell'unità H: (Any Other)

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


0

Se è necessario utilizzare virgolette doppie su qualsiasi parametro, è possibile ottenere l'errore "'c: \ somepath' non è riconosciuto come comando interno o esterno, programma eseguibile o file batch". Suggerisco di seguito la soluzione quando si utilizza il doppio segno di interrogazione: https://stackoverflow.com/a/43467194/3835640


0

Puoi usare le virgolette usando [ /D"Path"] /D solo per specificare il percorso e non il percorso + programma. Sembra che tutto il codice sulla stessa riga che segue ritorni al significato normale che non è necessario separare percorso e file.

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

o:

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

avvierà IE con la pagina Web predefinita.

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

inizia con Bing, ma non reimposta la tua home page.

/D sta per "directory" e usare le virgolette è OK!

ESEMPIO ERRATO:

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

dà:

ERRORE " La directory corrente non è valida. "

/Ddeve essere seguito solo da un percorso di directory. Quindi spazio e il file batch o il programma che si desidera avviare / eseguire

Testato e funzionante con XP, ma Windows Vista / 7/8 potrebbe richiedere alcune modifiche al controllo dell'account utente.

-Mrbios


-1

/b parametro

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

Cosa fa questo parametro?
Azeezah M

3
@AzeezahM / b significa che non verrà aperta una nuova finestra cmd. Questo però non risponde alla domanda di op.
aclave1

-4

hai provato:

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

?


-4

Inserisci il comando all'interno di un file batch e chiamalo con i parametri.

Inoltre, hai provato questo? (Sposta la citazione finale per incapsulare i parametri)

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

-4

Cambia "Virtual PC.exe" in un nome senza spazio come "VirtualPC.exe" nella cartella. Quando si scrive start "path"con "", CMD avvia una nuova finestra cmd con il percorso come titolo. Cambia il nome in un nome senza spazio, scrivilo su Blocco note e dopo questo salva come Name.cmd o Name.bat:

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

Questo comando reindirizzerà CMD alla cartella, avvierà VirualPC.exe, attenderà 2 secondi e uscirà.


1
Cosa succede se il software viene aggiornato? Improvvisamente hai un virtualpc.exe orfano.
Michael Beck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.