簡體   English   中英

通過批處理腳本啟動Windows可執行文件,exe不在程序文件中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM