2010-03-08 49 views
8

這可能是批處理腳本101,但我找不到任何明確的解釋/文檔說明爲什麼會發生這種情況,或者我的解決方法實際上是解決方案。所以基本上任何術語或鏈接到良好的來源,真的很感激。通過批處理腳本啓動Windows可執行文件,exe文件不在Program Files中

所以我有一個程序,我想通過批處理腳本(以及其他幾個程序)來執行。這是唯一一個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" 

沒有做任何事情。

感謝,

回答

16

你完全做:-)

可執行文件,在「當前工作可能尋找這個文件目錄「,這是設置,當你」光盤「之前。

您可以通過創建批處理文件的快捷方式手動設置工作目錄;右鍵點擊;屬性。

編輯:

您還可以設置使用start命令當前的工作目錄:

start "Title" /D "C:\WeirdProgram\WeirdProgramModule\" "weirdmodule.exe" 

編輯:

如果你想通過參數,可以只是將它們添加到可執行文件名正如您在常規快捷方式中所做的那樣:

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

+0

你可以獲得答案獎金,向我展示如何在一行中執行。從你們兩個人的意思來看,都是一樣的,但是我的上司們想要一個像鼓一樣緊的東西。 – Anthony

+0

我該如何將參數傳遞給怪模塊? –

+0

我會更新我的答案。 –

5

發生了什麼事是weirdmodule.exe期待在「當前目錄」爲.mdb文件。您可能能夠通過命令行參數或某種其他配置方法(可能是註冊表或.ini文件)來告訴它在何處找到.mdb文件。不過,您如何指定位置完全取決於weirdmodule.exe計劃。

除此之外,您目前的解決方法可能是你堅持使用的。

至於你的問題,使用start.exe ......在start.exe程序有治療的第一個參數爲「標題」就擺在窗口,如果的非常,非常奇怪的行爲(在我看來怪異行爲)(和只有)第一個參數在引號中。所以你有幾個選擇:

  • 不要使用引號來指定程序。這適用於你,因爲你並不需要引號(有沒有在路徑需要引用任何空格或其他特殊字符):

    start C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe 
    
  • 給空(或其他字符串)稱號作爲第一個參數。這是你必須做,如果你的路徑所需的報價:

    start "" "C:\WeirdProgram\WeirdProgramModule\weirdmodule.exe" 
    
+0

'mdb'文件就在'exe'文件的旁邊。我會認爲它看起來與它在調用它的路徑之前所調用的路徑相同(如果這是有道理的話)。 – Anthony

+0

當前目錄可能是您正在運行的批處理文件的位置。這就是你的解決方案工作的原因(當前目錄已更改爲exe)。 – Russell

+0

@Anthony:你說得對,在應用程序目錄中查找通常是有道理的。這是一種常見的技術 - 儘管我認爲通常首先查看當前目錄,然後查找應用程序目錄。如果他們想要擁有多個數據集,這就爲用戶提供了更多的靈活性。不幸的是,任何對程序進行編碼的人都會受到它的控制,從而賦予其應有的靈活性。 –

相關問題