2013-04-08 290 views
7

比方說,我正在使用批處理文件,並希望它指向位於同一批處理目錄中的文件夾。如果我沒有錯,你會寫「%〜dp0 \ anyfoldername」。但是,只能寫「。\ anyfoldername」才能做到這一點嗎?如果是這樣,各個命令有何區別和/或優勢?「%〜dp0」和「。」之間的區別?

+1

也許你可以。但是,如果當前目錄不在您希望的位置,那將會慘敗。 – 2013-04-08 23:37:53

+0

這將導致作爲管理員運行...因此你做什麼RGuggisberg下面說..我現在得到它lol – user2259606 2013-04-09 00:30:31

回答

17
pushd %~dp0 

通常用於更改爲啓動批處理的原始目錄。 當用戶可以'以管理員身份運行'時,這在更新的操作系統中非常有用,它可以爲您更改當前目錄!嘗試一下。只是做一個簡單的蝙蝠

@echo off 
echo.CD=%CD% 
pushd %~dp0 
echo.CD=%CD% 
pause 

現在運行它。 現在在Vista,Win 7,Win 8,2008 Server或2012 Server上再次運行'以管理員身份'。 看看會發生什麼?

+0

好吧,這有助於很多,我明白爲什麼需要dp0。但pushd和cd有什麼區別? – user2259606 2013-04-09 00:27:49

+0

回答自己:pushd和cd之間的區別在於pushd存儲了POPD命令使用的上一個文件夾/路徑。 POPD將目錄更改回最近由PUSHD命令存儲的路徑/文件夾。繁榮。我愛你們,謝謝! – user2259606 2013-04-09 00:40:17

+1

如果您需要遍歷根目錄到另一個驅動器,PUSHD可以無縫工作,而使用CD則需要使用帶有/ d參數的CD或調用CD,然後鍵入驅動器名稱。 – 2013-04-09 13:46:23

3

".\將對於CURRENT目錄中找到,因此,如果您更改目錄與​​CD命令,那麼定定地看着THAT目錄,而不是目錄中該批次所在。

實際上,創建一個單獨的目錄(通常稱爲\batch或可能是\belfry)來保留批處理文件是正常的。如果問題,bat位於path上,它將被定位。 %dp0將產生.bat的位置。

+0

此外,工作目錄可能會不同於腳本的父目錄取決於如何啓動腳本。 – 2013-04-09 09:25:41

相關問題