2012-03-07 30 views
30

Digamos que tengo estos comandos:¿Cómo establecer el directorio de trabajo de un comando en un archivo por lotes de Windows?

Prog1.exe 
D:\SomeDir\Prog2.exe 
Prog3.exe 

Ahora, digamos por la segunda línea, me gustaría que el directorio de trabajo a ser D: \ somedir, pero en PROG1.EXE y Prog3.exe Quiero que el valor predeterminado directorio de trabajo (normalmente, donde está mi archivo .bat). Si intento esto

Prog1.exe 
cd D:\SomeDir 
D:\SomeDir\Prog2.exe 
Prog3.exe 

Aparentemente Prog3 se ejecutará en SomeDir, que no es lo que quiero.

Respuesta

53

Usted podría utilizar los comandos pushd/popd (ayuda con pushd /?)

Prog1.exe 
Pushd D:\SomeDir 
Prog2.exe 
popd 
Prog3.exe 
10

Usted podría utilizar el comando cd (con ayuda cd /?) con el 0%, la ruta del archivo bat, variable.

Prog1.exe 
cd D:\SomeDir 
Prog2.exe 
cd %dp0 
Prog3.exe 

Para obtener una lista completa de 0% modificadores ver call /? o for /? ayuda.

Sin embargo, solo agrego esto para proporcionar una respuesta más completa sobre Desbordamiento de pila. RECOMIENDO usar la solución de jeb arriba.

6

Lo que funcionó para mí es la adición de un /d:

cd /d C:\nginx 
ECHO Stopping nginx... 
start nginx -s quit 

(. Cuando yo no tenía la /d, no funcionó)

https://stackoverflow.com/a/18310141/470749 intentos de explicarlo.

+2

¿Qué significa/d? –

+4

@ СеменихинМаксим, De la documentación: "Use el modificador/D para cambiar la unidad actual además de cambiar el directorio actual de una unidad". Básicamente, siempre desea especificarlo al cambiar dir a rutas absolutas arbitrarias. – Mikhail

Cuestiones relacionadas