2012-12-03 51 views
3

我想通過腳本在其默認程序中打開一個文件(特別是視頻文件)。當我遇到有空格的文件名,它是採取幾個論點是毫不奇怪:通過命令提示符在Windows中打開帶空格的文件

C:\folder>start test space.avi 
    The system cannot find the file test. 

然而,當我用引號括文件名:

C:\folder>start "test space.avi" 

而不是打開的文件的默認程序(VLC)中,新的命令提示符窗口打開到文件的目錄。

打開沒有空格或引號的文件將按預期在VLC中打開該文件。

我該如何解決這個問題?

+3

就像一個簡單的「'''是一個現狀te,不是括號。 (當你編程時,由於語法,術語很重要。):-) –

+0

我不知道我是如何犯這個錯誤的。謝謝。 – unmuse

回答

9

只要離開start,並用雙引號包圍完整文件名(包括任何路徑)。這工作得很好我的系統上:

C:\>"test space.avi" 
3

這是一個衆所周知的問題(至少對我來說:-)

你會在你的CMD腳本使用短名稱格式。 找出一個特定文件的短名稱請執行以下操作:

  1. 打開CMD窗口指向該文件的文件夾。
  2. 運行命令:$> dir /X
  3. 在中間一列中,您會看到感興趣文件的簡稱。在你的具體情況下,它會是這樣的:TESTSP〜1.AVI
  4. 在腳本中使用這個裸名。

希望,它有助於

+0

嗯,不,你沒有。看到我的答案。 –

+0

在一般情況下(我記住)必須。除非你想啓動一個_GUI應用程序,因此根本不需要使用** start **命令。 – Avdej

+0

有關使用默認程序的具體問題以及大多數問題(如果不是全部 - 我還沒有找到任何失敗的問題),使用引用的長文件名時無需啓動就可以正常運行。你有一個特定的格式(有一個註冊的默認處理程序)記住,不起作用?如果它失敗了,那是程序的錯。 Windows會正確傳遞長文件名,如果接收程序沒有正確使用它,則應更換接收程序;長文件名已被支持17年以上。 –

11

我懷疑開始做一些特別的東西時,第一個參數的第一個字符是一個報價。第一個參數是一個窗口標題,和第二個是命令/文件以打開

start "" "test space.avi" 

http://ss64.com/nt/start.html

+0

這就是問題的確切答案! –

0

添加初始「」爲格倫指示確保CMD繼續,並且不進入等待模式。這在批處理文件中尤爲重要。

總結:

1-打開文件,並等待用戶進行到下一個命令

start "" "test space.avi" 

2-打開文件之前關閉它,並繼續下一個命令(沒有等待)

start "" "test space.avi" 

根據您的需要,您可能會選擇1或2.

相關問題