2012-03-07 23 views
30

Diciamo che ho questi comandi:Come impostare la directory di lavoro di un comando in un file batch di Windows?

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

Ora, dire che per la seconda linea, vorrei la directory di lavoro di essere D: \ somedir, ma in PROG1.EXE e Prog3.exe voglio il default directory di lavoro (normalmente, dove è il mio file .bat). Se provo questo

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

Apparentemente Prog3 verrà eseguito in SomeDir, che non è quello che voglio.

risposta

53

È possibile utilizzare i comandi pushd/popd (aiuto con pushd /?)

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

Si potrebbe utilizzare il comando cd (aiuto con cd /?) con il% 0, il percorso del file bat, variabile.

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

Per un elenco completo di% 0 modificatori vedere call /? o for /? aiuto.

Tuttavia, lo aggiungo solo per fornire una risposta più completa su Stack Overflow. Vorrei RACCOMANDARE di usare la soluzione di jeb sopra.

6

Quello che ha funzionato per me è l'aggiunta di un /d:

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

(. Quando io non ho avuto la /d, non ha funzionato)

https://stackoverflow.com/a/18310141/470749 cerca di spiegare esso.

+2

cosa significa? –

+4

@ СеменихинМаксим, Dalla documentazione: "Utilizzare l'opzione/D per modificare l'unità corrente oltre a modificare la directory corrente per un'unità." Fondamentalmente, si vuole sempre specificarlo quando si cambia dir in percorsi assoluti arbitrari. – Mikhail

Problemi correlati