2012-01-03 22 views
23

Estoy intentando cambiar a un directorio usando cmd y luego ejecutar un archivo de proceso por lotescmd.exe/k modificador

p.

cmd /k cd "C:\myfolder" 
startbatch.bat 

también he intentado (sin éxito)

cmd cd /k cd "C:\myfolder" | startbatch.bat 

Aunque la primera línea (cmd/k) parece funcionar bien, pero el segundo comando no se ejecuta. Estoy usando Vista como el sistema operativo

+0

¿Es posible que la pregunta anterior sea más relevante para el foro Super Stack Stack Exchange? –

+1

Stack Overflow es un sitio para preguntas de programación y desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Consulte [Qué temas puedo preguntar aquí] (http://stackoverflow.com/help/on-topic) en el Centro de ayuda. Tal vez [Superusuario] (http://superuser.com/) sería un mejor lugar para preguntar. – jww

Respuesta

42

sintaxis correcta es:

cmd /k "cd c:\myfolder & startbatch.bat" 
+0

Gracias ssg !!!! – Mike

+0

todavía funciona en win 7 – stackuser83

+0

¿Qué pasa si el directorio se llama "c: \ my folder \" (observe el espacio) ¿qué hago entonces? –

2
cmd cd /k "cd C:\myfolder; startbatch.bat" 

o, ¿por qué no vas cmd /k c:\myfolder\startbatch.bat, y no cd c:\myfolder en el archivo .bat?

+2

No creo que ';' se pueda usar como separador de comandos en la creación de scripts por lotes de Windows. Normalmente, se usa '&' en su lugar. –

6

ssg publicado la respuesta correcta. Solo agregaría/d al comando cd (por ejemplo, cd /d drive:\directory). Esto garantiza que el comando funcione en caso de que el directorio actual esté en una unidad diferente a la del directorio al que desea codificar.

0

Puede usar & o && como separador de comandos en Windows.

Ejemplo:

cmd cd /K "cd C:\myfolder && startbatch.bat" 
0

doy esto como una respuesta porque vi esta pregunta en un comentario y no puedo comentar todavía.

cmd /k "cd c:\myfolder & startbatch.bat"

obras, y si tiene espacios:

cmd /k "cd "c:\myfolder" & startbatch.bat"

Según tengo entendido, el comando se pasa a cmd como "cd "c:\myfolder" & startbatch.bat", que se rompe a continuación, hacia abajo en cd "c:\myfolder"&startbatch.bat en en qué punto el " " restante se ocupa de la ruta como cadena.

También puede usar &&, | y || según lo que desee lograr.

+0

Para aquellos interesados ​​en explorar la diferencia entre '&', '&&', '|' y '||': http://www.chebucto.ns.ca/~ak621/DOS/DOS-Char.html – Marc

0

no puedo ver una respuesta frente a este, así que si alguien necesita tener acceso a un directorio que tiene espacio en su nombre, puede agregar cotizaciones adicionales, por ejemplo

cmd.exe /K """C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"" & powershell.exe" 

De PowerShell necesita para escapar de las cotizaciones mediante el backquote `

cmd.exe /K "`"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat`" & powershell.exe" 

Aviso las cotizaciones escapado

`" 

dentro de la cadena de ruta:

"`"C:\my path\`"" 

Esto ejecutará el comando apropiado en cmd, es decir, el camino rodeado con citas que deben trabajar.

El comando de ejemplo anterior inicializará el símbolo del sistema del desarrollador de MSVC y volverá a PowerShell, heredará el entorno y dará acceso a las herramientas de MSVC.

+0

nunca oído hablar de escapar con 'en lote. – Stephan

+0

Es cierto, he actualizado la respuesta con el ejemplo correcto para 'cmd'. El otro ejemplo fue para llamar 'cmd' desde' powershell'. Espero que la respuesta sea más clara ahora. – Bhyd

Cuestiones relacionadas