如何獲取運行腳本的目錄並在.cmd文件中使用它?命令行.cmd/.bat腳本,如何獲取運行腳本的目錄
回答
雷蒙德陳有幾個想法:
http://blogs.msdn.com/oldnewthing/archive/2005/01/28/362565.aspx
這裏轉引全因爲MSDN檔案往往是有些不可靠:
最簡單的辦法是使用
%CD%
僞變量。它擴展到當前工作目錄的 。
set OLDDIR=%CD%
.. do stuff ..
chdir /d %OLDDIR% &rem restore current directory
(當然,目錄保存/恢復會更容易有 已經完成與
pushd
/popd
,但在這裏,這不是問題的關鍵。)的
%CD%
竅門即使從命令行也很方便。例如,I 經常發現自己在一個目錄中有一個文件,我想要 對其進行操作,但是......哦,我需要chdir到 才能執行該操作。
set _=%CD%\curfile.txt
cd ... some other directory ...
somecommand args %_% args
(我喜歡用
%_%
作爲我的刮環境變量。)
SET /?
類型看到由命令 處理器提供的其它僞變量。
而且在文章中的評論是非常值得的掃描比如這一個:
http://blogs.msdn.com/oldnewthing/archive/2005/01/28/362565.aspx#362741
這包括使用%〜DP0:
如果你想知道批處理文件的位置:
%~dp0
%0
是批處理文件的名稱。~dp
給出了指定參數的驅動和路徑 。
這相當於腳本的路徑:
%~dp0
它使用批處理參數擴展語法。參數0始終是腳本本身。
如果您的腳本存儲在C:\example\script.bat
,則%~dp0
評估爲C:\example\
。
ss64.com有關於參數擴展語法的更多信息。以下是相關摘錄:
您可以在命令行中使用%後跟數字位置來獲取任何參數的值。
[...]
當一個參數用於提供文件名然後將下面的擴展語法可以應用於:
[...]
%〜D1展開%1到一個驅動器號 - C:
[...]
%〜P1展開%1的路徑只有如\ utils \這包括一個尾部\,它可能被某些命令解釋爲轉義字符。
[...]
修飾符以上可以組合:
%〜DP1展開%1到驅動器號和路徑僅
[...]
您可以使用%0獲取批處理腳本本身的路徑名,參數擴展名可以應用於此,因此%〜dp0將返回批處理腳本的驅動器和路徑,例如女:\腳本\
for /F "eol= delims=~" %%d in ('CD') do set curdir=%%d
pushd %curdir%
的
- 1. 如何從命令行運行腳本?
- 2. 如何從命令行將Java腳本運行Groovy腳本?
- 3. 如何運行,我在命令行運行腳本時指定的目錄中的Perl腳本
- 4. 如何從腳本運行raco命令?
- 5. 如何獲取我使用Perl腳本運行的Unix命令?
- 6. 腳本在命令運行時運行
- 7. Bash腳本 - 如何獲取腳本目錄,以便它在Cron運行
- 8. 如何從腳本中查找Python運行腳本的目錄?
- 9. MySQL命令行運行腳本兩次
- 10. 從命令行運行Perl腳本?
- 11. 從命令行運行Groovy腳本
- 12. 命令行腳本php不運行
- 13. 在命令行上運行asp腳本
- 14. 從命令行運行Sqlite3腳本
- 15. 從vim命令行運行vim腳本
- 16. 在命令行運行Shell腳本
- 17. 在每個子目錄中運行命令的Linux Shell腳本
- 18. 從特定目錄中的python腳本運行bash命令
- 19. Shell腳本:在shell腳本中運行「exit」命令後執行命令
- 20. 如何在數據庫的命令行上運行postgreSQL腳本/ bash腳本
- 21. shell腳本遍歷目錄的子目錄並執行命令
- 22. Python腳本來運行Django的命令
- 23. 運行django命令的自動腳本
- 24. 從MEL命令運行的Python腳本
- 25. 用於運行命令的Bash腳本
- 26. 從任何目錄運行腳本
- 27. 命令在Ubuntu中運行Perl腳本中的Tcl(expect)腳本
- 28. 應該如何根據運行腳本獲取腳本?
- 29. 如何從命令行通過shell腳本創建目錄?
- 30. mac os:如何在命令行上運行多行腳本?
可能重複[?如何獲得在Windows批處理腳本的路徑(http://stackoverflow.com/questions/3827567/how-批處理腳本在窗口中的路徑) – Celada 2012-12-24 05:01:56