2012-03-07 80 views
30

比方說,我有以下命令:如何在Windows批處理文件中設置命令的工作目錄?

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

現在,假設第二行,我想將工作目錄是d:\ SomeDir,但在Prog1.exe和Prog3.exe我希望默認工作目錄(通常,我的.bat文件所在的位置)。如果我試試這個

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

顯然PROG3將在SomeDir被執行,這不是我想要的。

回答

53

你可以使用pushd/POPD命令(與pushd /?幫助)

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

你可以用%0,bat文件路徑,變量使用cd命令(cd /?幫助)。

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

爲0%修飾符的完整列表,請參閱call /?for /?幫助。

但是,我只是增加了這個,以提供堆棧溢出更完整的答案。我會推薦使用上面的jeb解決方案。

6

什麼工作對我來說是增加了/d

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

(當我沒有足夠的/d,它不工作)

https://stackoverflow.com/a/18310141/470749試圖解釋它。

+2

什麼是/ d是什麼意思? – 2016-11-09 05:50:42

+4

@СеменихинМаксим,從文檔:「除了更改驅動器的當前目錄之外,使用/ D開關更改當前驅動器」。基本上,你總是希望在將dir改爲任意絕對路徑時指定它。 – Mikhail 2016-12-31 12:23:06

相關問題