如何抑制'打开'窗口

时间:2014-01-16 00:23:33

标签: windows batch-file cmd

使用test.nopetest.nopecall test.nope从命令行或批处理文件运行具有未知扩展名的文件(例如start test.nope)时 - 您会出现一个窗口,要求您"Choose the program you want to use to open this file"(在Windows 7中,可能在大多数Windows操作系统中)。

是否可以取消此窗口?

我最初的想法是在尝试打开文件之前检查%PATHEXT%变量中是否存在扩展名。但是,这不包含所有已知文件扩展名。例如,虽然.py扩展名不在我的%PATHEXT%变量中,但Python脚本仍然可以正确打开。

2 个答案:

答案 0 :(得分:3)

直接注册表查询的替代方法(由@Mitch建议)是使用命令行实用程序assoc

assoc .nope

如果没有为文件扩展名注册的应用程序,则会生成

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

如果找到关联(例如,对于.docx扩展名),则会生成

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

您可能还会发现ftype有用。它返回assoc返回的文件类型的命令行(我将Office安装在非默认位置,如您所见):

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

答案 1 :(得分: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启动。