Sådan indstilles arbejdsmappen for en kommando i en Windows-batchfil?

Indlæg af Hanne Mølgaard Plasc

Problem



Lad os sige, at jeg har disse kommandoer:


Prog1.exe
D:SomeDirProg2.exe
Prog3.exe


Sig nu for den anden linje, jeg vil gerne have, at arbejdskataloget er D: \ SomeDir, men i Prog1.exe og Prog3.exe vil jeg have standardkataloget (normalt, hvor min .bat-fil er). Hvis jeg prøver dette


Prog1.exe
cd D:SomeDir
D:SomeDirProg2.exe
Prog3.exe


Tilsyneladende udføres Prog3 i SomeDir, hvilket ikke er det, jeg vil have.

Bedste reference


Du kan bruge pushd/popd-kommandoerne (hjælp med pushd /?)


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

Andre referencer 1


Du kan bruge cd-kommandoen (hjælp til cd /?) med variablen\% 0, bat filsti.


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


For en komplet liste over\% 0 modifikatorer se call /? eller for /? hjælp.


Jeg tilføjer dog kun dette for at give et mere komplet svar på Stack Overflow. Jeg vil anbefale at bruge jeb 's løsning ovenfor.

Andre referencer 2


Hvad der fungerede for mig, tilføjer en /d:


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


(Da jeg ikke havde /d, fungerede det ikke.)


https://stackoverflow.com/a/18310141/470749 forsøger at forklare det.