1. 程式人生 > >bat運行當前路徑下程序

bat運行當前路徑下程序

bat 運行 註意 auto 我沒 命令 顯示 win7 lang

批處理中獲取當前路徑的方法可能有好幾種,具體有幾種我沒有研究過,本文只是對其中的兩種之間的差別進行簡單說明

本文涉及的兩個當前路徑標示為:%cd%、%~dp0

註:我的系統是win7旗艦版,其它系統沒有試過

我有兩個批處理文件,分別是

E:/1.bat

E:/myproject/debug/autoreg.bat

其中1.bat調用autoreg.bat,內容如下:

call E:\myproject\Debug\autoreg.bat

第二個批處理文件autoreg.bat是用來註冊和它在同一個目錄中的一個控件,內容如下:

regsvr32 my.ocx

直接雙擊autoreg.bat,可以成功註冊控件,如果雙擊1.bat文件,則提示註冊失敗,其中cmd窗口中顯示:

E:>regsvr32 my.ocx

這個顯示顯然不正確,實際應該是:

E:\myproject\Debug>regsvr32 my.ocx


可以看出,1.bat調用autoreg.bat時,其當前路徑不是 E:\myproject\Debug,而是E:\,所以註冊失敗

這個容易,直接在 my.ocx 的前面加上當前路徑即可,如下:

regsvr32 %cd%\my.ocx

雙擊autoreg.bat,註冊成功,再雙擊1.bat,結果還是註冊失敗,cmd窗口中顯示如下:

E:>regsvr32 E:\\my.ocx


這裏不僅僅是%cd%後面有無“\”的問題,而還是路徑不對,看來這個%cd%有點不太好用。

再用第二個,即%~dp0來試,把autoreg.bat文件改成如下:

regsvr32 %~dp0my.ocx

註意,%~dp0後面不要那個“\”號,因為%~dp0是以“\”結尾的。(%cd%有點奇怪,在autoreg.bat中結尾是debug,而在1.bat中調用autoreg.bat時,卻又是以“\”結尾的,所以如果要使用%cd%,則其後必需加上“\”,否則直接雙擊autoreg.bat時,路徑就變成了 E:\myproject\Debugmy.ocx)

雙擊autoreg.bat註冊成功,再雙擊1.bat也註冊成功

總結:

%cd%是最初開始命令所在的當前路徑,而%~dp0則是對應命令所在的當前路徑

bat運行當前路徑下程序