如何禁止“打开”窗口

当从命令行或batch file运行一个具有未知扩展名的文件(可以说是test.nope )时 – 使用test.nopecall test.nope或者start test.nope – 会出现一个窗口,要求你"Choose the program you want to use to open this file" (在Windows 7中,大概是在大多数Windows操作系统中)。

是否可以压制这个窗口?

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

Solutions Collecting From Web of "如何禁止“打开”窗口"

文件类型在HKCR\中注册( 完整文档可从MSDN获得 )。 您可以通过检查密钥的存在来了解是否注册了一个类型。 在批处理文件中,可以使用reg命令来执行此操作。

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

也就是说,文件类型可以被定义和命名,而不需要默认的处理程序。 此外,那些有默认处理程序的人可能没有命令行 – 文件可能通过DDE或COM启动。

直接注册表查询(如@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