2014-01-16 60 views
0

從命令行或批處理文件運行具有未知擴展名的文件(可以說是test.nope) - 使用test.nopecall test.nopestart test.nope - 將顯示一個窗口,要求您"Choose the program you want to use to open this file"(在Windows 7中,推測是在大多數Windows操作系統中)。如何禁止'打開'窗口

是否可以抑制此窗口?

我最初的想法是在嘗試打開文件之前檢查%PATHEXT%變量中是否存在擴展名。但是,這並不包含全部已知的文件擴展名。例如,儘管.py擴展名不在我的%PATHEXT%變量中,但Python腳本仍可正確打開。

+1

那你想讓它做的,而不是問你有什麼計劃,使用?如果你知道正確的程序,你爲什麼不直接打電話給他? ('python test.py',而不是'start test.py') – Mitch

+0

也許只是errorlevel或其他東西的變化 - 也不一定總是有效 - 儘管我已經安裝了python,並且.py文件將使用python打開,我可以不要使用'python'命令,因此如果該程序可以被調用或者不被調用,那麼它不是最好的檢查。不過,您可能不知道調用該文件的正確程序是什麼。例如,如果你有一個不同類型的程序列表需要運行。在任何情況下,我都沒有尋找解決辦法,只是爲了好奇。 – unclemeat

回答

2

文件類型在HKCR\full documentation available from MSDN)中註冊。您可以通過檢查密鑰的存在來了解類型是否已註冊。在批處理文件中,您可以使用reg命令來執行此操作。

reg query HKCR\.txt || echo This will never print 
reg query HKCR\.foobartxt || echo Could not find foobartxt 

這就是說,可以定義和命名文件類型,而無需默認處理程序。此外,那些有默認處理程序的人可能沒有命令行 - 文件可能通過DDE或COM啓動。

+0

很棒的回答。謝謝。 – unclemeat

+0

爲什麼回顯語句? –

+2

@rockstartprogrammer,因爲我很懶,而且很容易測試。 – Mitch

3

到直接註冊表查詢(如由@米奇建議的)另一種方法是使用命令行實用程序assoc

assoc .nope 

如果沒有對文件的擴展名註冊的應用它產生

C:\>assoc .nope 
File association not found for extension .nope 

如果找到關聯(例如,對於.docx擴展名),它會生成

C:\>assoc .docx 
.docx=Word.Document.12 

您可能還會發現ftype有用。它返回由assoc(我辦公室安裝在非缺省位置,因爲你可以看到)返回的文件類型的命令行:

C:\>ftype Word.Document.12 
Word.Document.12="D:\Microsoft Office\Office12\WINWORD.EXE" /n /dde 
+0

非常翔實的答案。 –

+0

另一個偉大的答案,謝謝肯。 – unclemeat