2010-04-28 167 views

回答

103

嘗試撥打.exe%~dp0,如下所示:%~dp0MyProgram.exe

%0包含被調用.bat文件的完整路徑。

~dp說得到驅動器和路徑,包括尾隨\

+2

+1票 剛剛在谷歌搜索 - http://weblogs.asp.net/whaggard/archive/2005/01/28/get-directory-path-of-an-executing-batch-file上找到此鏈接。 aspx – house9 2010-04-28 15:17:54

+0

很好的解釋,謝謝! – enderland 2013-01-22 22:36:33

+12

Patrick Cuff上面的答案是有效的,但如果目錄路徑的一部分名稱中有空格,則會失敗。爲了解決這個問題,你需要在.exe調用中加雙引號。 「%〜dp0MyProgram.exe」 – 2013-02-05 17:50:49

0

似乎很奇怪?我沒有工作在Windows上的某個時候,但

你嘗試用./

./program.exe

確實應該是沒有區別領先?也許蝙蝠是從C:\ Windows的上下文執行的,或者你的批處理是否在某個點執行了任何cd操作?

+0

你的意思是\(即反斜槓)。 – 2010-04-28 15:09:32

+0

我認爲當我執行批處理時,它正從另一個目錄執行。 – 2010-04-28 15:11:04

+1

也許我的問題是「如何雙擊一個批處理文件並使其在同一個目錄下執行?」 – 2010-04-28 15:11:45

11

我通過在腳本的開始處使用pushd來更改工作目錄來解決此問題,並使用popd在腳本的末尾恢復。通過這種方式,您始終可以假定工作目錄與bat文件的位置相同。

pushd %~dp0 
ProgramInSameFolderAsBat.exe 
popd 
相關問題