![](/img/trans.png)
[英]Executing parameterized .exe files via batch script (Windows command line)
[英]starting a windows executable via batch script, exe not in Program Files
這可能是批處理腳本101,但我找不到任何明確的解釋/文檔,說明為什么會發生這種情況,或者我的解決方法實際上是解決方案。 因此,基本上任何術語或與良好來源的鏈接都非常受歡迎。
所以我有一個程序,我想通過批處理腳本(以及其他幾個程序)執行。 它是exe
不在Program Files
夾中的唯一一個。 我可以這樣開始:
C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe
但我得到一個錯誤:
Run-time Error '3024':
Could not find file
C:\Users\MyUserName\Desktop\ModuleSettings.mdb
因此,程序似乎正在從批處理腳本啟動的同一位置查找其設置文件。 鑒於我通過執行以下操作終於完成了所有工作:
cd C:\WeirdProgram\WeirdProgramModule\
weirdmodule.exe
這很好,並且不得不走這條路(這只是一條額外的路線)並不是世界末日,但我已經說服自己,由於缺乏基本的理解,我做錯了。
任何人都知道或可以指出為什么它這樣工作?
哦,並做以下事情:
start "C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe"
什么都不做。
謝謝,
你做得很完美:-)
可執行文件可能正在“當前工作目錄”中查找此文件,該文件正在設置之前,當您“cd”之前。
您可以通過創建批處理文件的快捷方式手動設置工作目錄; 右鍵點擊; 屬性。
編輯:
您還可以使用start
命令設置當前工作目錄:
start "Title" /D "C:\WeirdProgram\WeirdProgramModule\" "weirdmodule.exe"
編輯:
如果您想傳遞params,只需將它們添加到可執行文件名中,就像在常規快捷方式中一樣:
start "Title" /D "C:\WeirdProgram\WeirdProgramModule\" "weirdmodule.exe" "param1 param2"
要么
start "Title" /D "C:\WeirdProgram\WeirdProgramModule\" "weirdmodule.exe param1 param2"
作為參考,此處描述了語法: http : //www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx?mfr = true 。
發生的事情是weirdmodule.exe
正在查找.mdb
文件的“當前目錄”。 您可以通過命令行參數或其他一些配置方法(可能是注冊表或.ini文件)告訴它在哪里找到.mdb
文件。 但是,如何指定位置完全取決於weirdmodule.exe
程序。
除此之外,您當前的解決方法可能就是您所堅持的。
至於你使用start.exe
的問題... start.exe
程序有一個非常非常奇怪的行為(在我看來是奇怪的行為)將第一個參數視為放入窗口的“標題”(如果)僅當)第一個參數在引號中。 所以你有幾個選擇:
不要使用引號來指定程序。 這對你有用,因為你不需要引號(路徑中沒有任何空格或其他特殊字符需要引用它):
start C:\\WeirdProgram\\WeirdProgramModule\\weirdmodule.exe
將空(或其他字符串)標題作為第一個參數。 如果您的路徑需要引用,則必須執行以下操作:
start "" "C:\\WeirdProgram\\WeirdProgramModule\\weirdmodule.exe"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.