2008-09-16 12 views
66

Necesito crear un archivo por lotes que inicie varias aplicaciones de consola en un archivo .cmd de Windows. Esto se puede hacer usando el comando de inicio.Cómo crear un archivo por lotes en Windows usando "inicio" con una ruta y comando con espacios

Sin embargo, el comando tiene una ruta de acceso. También necesito pasar parámetros que también tengan espacios. ¿Como hacer esto?

E.g. archivo por lotes

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

Respuesta

140

En realidad, su ejemplo no funcionará (aunque al principio pensé que lo haría, también). Según la ayuda para el comando de Inicio, el primer parámetro es el nombre de la ventana del Símbolo del sistema recién creada, y el segundo y el tercero deben ser la ruta a la aplicación y sus parámetros, respectivamente. Si agrega otro "" antes de la ruta a la aplicación, debería funcionar (al menos lo hizo para mí). Usar algo como esto:

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

se puede cambiar el primer argumento para ser lo que quiera el título del nuevo símbolo del sistema para ser. Si se crea una aplicación de Windows, no se mostrará el símbolo del sistema y el título no tendrá importancia.

+3

Gracias, esto ayudó. No me di cuenta de que el título de la ventana era obligatorio. –

+4

Me ahorras horas de problemas ... – tmow

+0

Parece que el título de la ventana es obligatorio, aunque hay mucha documentación en Internet que indica lo contrario. Ignora esa documentación. Sigue la sugerencia de Andy. – Corin

-1

Rodear la ruta y el argumento con espacios entre comillas como en su ejemplo debería hacer. El comando puede necesitar manejar las comillas cuando se le pasan los parámetros, pero generalmente no es un gran problema.

14

El escape de la ruta con apóstrofes es correcto, pero el comando de inicio toma un parámetro que contiene el título de la nueva ventana. Este parámetro es detectado por los apóstrofos circundantes, por lo que su aplicación no se ejecuta.

intentar algo como esto:

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

va a usar algo como esto:

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

inicio/d "C: \ Archivos de programa \ Mozilla

Firefox" firefox.exe iniciar/d

"C: \ archivos de programa \ Microsoft

Office \ Office12" EXCEL.EXE

También me consejo que utilizar el editor de archivos por lotes especial - Dr.Batcher

1

Curiosamente, parece que en Windows Embedded Compacto 7, no se puede especificar una cadena de título. El primer parámetro tiene que ser el comando o programa.

-1

Investigué con éxito y está funcionando bien para mí. Mi requisito es enviar un correo electrónico usando vbscript, que necesita ser llamado desde un archivo por lotes en Windows. Aquí está el comando exacto que estoy usando sin errores.

START C:\Windows\System32\cscript.exe "C:\Documents and Settings\akapoor\Desktop\Mail.vbs" 
+0

Esto está mal. Puede escribir 'START" "" C: \ Documents and Settings \ akapoor \ Desktop \ Mail.vbs "'. Tu código solo funciona porque vbs es una extensión que se resuelve cuando lo "inicias". Intenta llamar a notepad.exe con la ruta, no funcionará. Siempre ejecutará el script. – Samuel

1
start "" "c:\path with spaces\app.exe" "C:\path parameter\param.exe" 

Cuando solía sugerencia anterior, tengo " 'c: \ ruta' no se reconoce un comando interno o externo, programa o archivo por lotes". Creo que la segunda marca de qoutation evita que se ejecute el comando.Después de buscar por debajo de la solución, salve mi día:

start "" CALL "c:\path with spaces\app.exe" "C:\path parameter\param.exe" 
Cuestiones relacionadas