bat運行當前路徑下程序


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

本文涉及的兩個當前路徑標示為:%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則是對應命令所在的當前路徑


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM