当从命令行或batch file运行一个具有未知扩展名的文件(可以说是test.nope
)时 – 使用test.nope
, call 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脚本仍能正确打开。
文件类型在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