Usar el comando "inicio" con los parámetros pasados ​​al programa iniciado

224

Tengo una máquina virtual en Virtual PC 2007.

Para iniciarlo desde el escritorio, tengo el siguiente comando en un archivo por lotes:

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

Pero eso deja un mensaje de dos en la máquina host hasta que la máquina virtual se apaga y salgo de la consola de Virtual PC. Eso es molesto.

Entonces cambié mi comando para usar el comando START, en su lugar:

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

Pero se ahoga en los parámetros pasados ​​a Virtual PC.

START /?indica que los parámetros realmente van en esa ubicación. ¿Alguien ha usado START para iniciar un programa con múltiples argumentos de línea de comandos?

JosephStyons
fuente

Respuestas:

467

START tiene una peculiaridad que involucra comillas dobles alrededor del primer parámetro. Si el primer parámetro tiene comillas dobles, lo usa como el TÍTULO opcional para la nueva ventana.

Creo que lo que quieres es:

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

En otras palabras, déle un título vacío antes del nombre del programa para simularlo.

Tim Farley
fuente
2
¿Esto está en desuso? En Win 7 consigoStart-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
¿Quién lo hubiera imaginado? Solo el número de votos a favor de su respuesta debería ser una razón suficiente para que Microsoft solucione esta 'peculiaridad'.
Piyush Soni
77
@geotheory Me doy cuenta de que este es un comentario antiguo, pero en PowerShell, start es un alias para Start-Process. En cmd.exe (un poco anticuado, pero no obsoleto) "inicio" es diferente. Ambos están destinados a iniciar otros procesos, pero start es un antiguo comando incrustado en cmd.
Adam Plocher
Esto me causó mucho dolor de cabeza. Gracias por la solucion!
uceumern
15

En lugar de un archivo por lotes, puede crear un acceso directo en el escritorio.

Establezca el objetivo para:

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

y ya está todo listo Como no está iniciando un símbolo del sistema para iniciarlo, no habrá un cuadro de DOS.

Ferruccio
fuente
3

Los espacios son problemas de DOS / CMD, por lo que debe ir a la ruta a través de:

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

y luego simplemente inicie VPC a través de:

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

~1significa el primero execon "Virtual"al principio. Entonces, si hay a "Virtual PC.exe"y a, "Virtual PC1.exe"el primero sería el Virtual~1.exey el segundo, Virtual~2.exey así sucesivamente.

O use un cliente VNC como VirtualBox.

ghostdog21
fuente
1
Esto parece una solución razonable, pero en realidad no aborda el problema subyacente, que está cubierto por la respuesta aceptada.
Sam
1
esto no funcionará si los nombres de archivo cortos no están habilitados. Siempre deshabilito los nombres de archivo 8.3 en mis sistemas
phuclv
1

Ninguna de estas respuestas funcionó para mí.

En cambio, tuve que usar el comando Llamar:

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

No estoy seguro de que esto realmente espere su finalización ... el C ++ Redistribuible que estaba instalando fue lo suficientemente rápido como para que no importara

JustAototherMikhail
fuente
@rene gracias por la edición. Si agrego más respuestas, me aseguraré de usar el formato de bloque de código
JustAnotherMikhail
0

La respuesta en "peculiaridad" es correcta y responde directamente a la pregunta. Como respondió TimF, dado que el primer parámetro está entre comillas, se trata como un título de ventana.

También tenga en cuenta que las opciones de Virtual PC se están tratando como opciones para el comando 'inicio' en sí, y no son válidas para 'inicio'. Esto es cierto para todas las versiones de Windows que tienen el comando 'inicio'.

Este problema con 'inicio' que trata el parámetro citado como un título es aún más molesto que solo el problema publicado. Si ejecuta esto:

start "some valid command with spaces"

Obtiene una nueva ventana de símbolo del sistema, con el resultado obvio para un título de ventana. Aún más molesto, esta nueva ventana no hereda la fuente, los colores o el tamaño de la ventana personalizados, es solo el valor predeterminado para cmd.exe.

BitDreamer
fuente
0

Si desea pasar el parámetro y su archivo .exe en la carpeta de prueba de c: drive

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

Si no desea pasar el parámetro y su archivo .exe en la carpeta de prueba de c: drive

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

Si no desea pasar el parámetro y su archivo .exe en la carpeta de prueba de la unidad H: (Any Other)

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

Mack
fuente
0

Si debe utilizar comillas dobles en cualquier parámetro, puede obtener el error "'c: \ somepath' no se reconoce como un comando interno o externo, un programa operable o un archivo por lotes". Sugiero la siguiente solución cuando se utiliza la marca de doble qoutation: https://stackoverflow.com/a/43467194/3835640

Mustafa Kemal
fuente
0

Puede usar comillas usando el uso [ /D"Path"] /D solo para especificar la ruta y no la ruta + programa. Parece que todo el código en la misma línea que sigue vuelve a la normalidad, lo que significa que no necesita separar la ruta y el archivo.

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

o:

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

iniciará IE con la página web predeterminada.

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

comienza con Bing, pero no restablece su página de inicio.

/D significa "directorio" y usar comillas está bien.

EJEMPLO INCORRECTO:

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

da:

ERROR " El directorio actual no es válido " .

/Dsolo debe ir seguido de una ruta de directorio. Luego espacio y el archivo por lotes o programa que desea iniciar / ejecutar

Probado y funciona bajo XP, pero Windows Vista / 7/8 puede necesitar algunos ajustes en UAC.

-Mrbios

Mrbios
fuente
-1

/b parámetro

start /b "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch
T.Todua
fuente
¿Qué hace este parámetro?
Azeezah M
3
@AzeezahM / b significa que no se abrirá una nueva ventana de cmd. Sin embargo, esto no responde la pregunta de op.
aclave1
-4

has probado:

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

?

alberteína
fuente
-4

Coloque el comando dentro de un archivo por lotes y llame a eso con los parámetros.

Además, ¿ya probaste esto? (Mover comilla final para encapsular parámetros)

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

Cambie "Virtual PC.exe" a un nombre sin espacio como "VirtualPC.exe" en la carpeta. Cuando escribe start "path"con "" el CMD comienza una nueva ventana de cmd con la ruta como título. Cambie el nombre a un nombre sin espacio, escríbalo en el Bloc de notas y luego guarde como Name.cmd o Name.bat:

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

Este comando redirigirá el CMD a la carpeta, iniciará VirualPC.exe, esperará 2 segundos y saldrá.

Rafael Pereira
fuente
1
¿Qué sucede si el software se actualiza? De repente tienes un virtualpc.exe huérfano.
Michael Beck