2014-06-23 228 views
1

我一直在尋找我的批處理文件的正確代碼來啓動程序並僅通過擴展名打開文件。我一直在尋找,所有我能找到的只是按文件名打開一個文件,沒有擴展名。我想反過來這樣做。我試了多次僅以批處理文件的擴展名打開文件

start "C:\program files\folder\program name.exe" d:\folder\filename.extension 

我已經找到了其他程序的一些答案,並嘗試過它們,但它們沒有奏效。我試圖用*代替文件名,但它不起作用。

我問的原因是因爲文件名會改變每個buildnumber,但擴展名在該文件夾中是唯一的。 希望你能幫助我。 感謝

回答

1

你可以做如下

rem ** go to the folder 
CD d:\folder 

rem ** find all the filenames with required extension using a for-loop 

FOR /F "tokens=1 delims=" %%A in ('DIR /b *.extension') do (
    rem ** Added some delay before start as per OP comments 
    timeout 5 
    rem ** use start command 
    start "C:\program files\folder\program name.exe" %%A 
) 

編輯:新增Timeout由`開始前有延遲按OP's comment

+0

感謝您的回覆。我不知道爲什麼,但它不起作用。它顯示了CMD屏幕,但是在我可以讀取任何它再次關閉之前。什麼都沒發生。 – user1527079

+0

我發現它爲什麼不起作用。我試圖調試它,並在每行之後放置'暫停'。它工作得很好。明顯地,它需要在進入文件夾和啓動應用程序之間暫停一段時間。 – user1527079

+0

是的,我做到了。我添加了1秒暫停,現在它工作正常!謝謝。 – user1527079

2

你應該能夠做到:

start "" filename.extension 

雙雙引號的窗口一些奇怪的,不合邏輯的,微軟-Y原因提供的名稱。

+0

「怪異,不合邏輯,微軟-Y」'我想你忘記了'start'命令的用途。最初,它被用來在dos中創建一個新的線程。因此,如果你正在創建一個新的線程,那麼在邏輯上***:你會想**先命名它,然後再分配它的任務。 *一切都有一個理由* **:D ** – Monacraft

+0

謝謝你的回覆。我認爲這不符合我的要求。這仍然需要知道文件名。我只想通過文件擴展名打開它。文件名包含buildnumber,因此每個版本都會有所不同。 – user1527079

相關問題