使用命令行批处理查看更改文件关联

当我们安装了相应的软件,然后双击桌面图标,确打不开相应的应用程序时,很有可能就是文件关联被更改的原因。为了使大家能做到知其然而知其所以然,要解决文件关联这个问题,先来讲一下文件关联的一些基本知识。

文件关联,主要的是把文件类型与开放式命令关联起来。而windows是通过文件的扩展名来识别文件类型的,这就首先需要把扩展名与文件类型关联起来。

要修改扩展名与文件类型的关联,我们需要用到一个DOC命令:assoc

单击开始——运行,在框中输入cmd,打开cmd命令行提示符,在cmd中输入:assoc /? 回车。就可以得到关于assoc这个命令的帮助。

assoc命令的作用有两个,第一是显示扩展名与文件类型的关联,第二是改写扩展名与文件类型的关联。

让我们以快捷方式的关联为例来讲述这个问题。

快捷方式的扩展名是.lnk,在windows系统下,.lnk这个扩展名一般是不会显现出来的,如果出现了,一定是它的文件关联出问题了。

我们在命令行提示符cmd中输入:assoc .lnk ,回车,得到显示结果是: .lnk=lnkfile 。这个命令结果显示了:扩展名.lnk与文件类型lnkfile是相关联的。凡是扩展名为.lnk的文件,都属于lnkfile这个文件类型。

当我们再输入命令: assoc .lnk=lnk ,按下回车键,lnk这个扩展名与文件类型的关联就被改写了。然后我们再输入命令: assoc .lnk ,回车,得到的结果将是: .lnk=lnk ,这个结果显示了,扩展名.lnk已经是与文件类型lnk相关联,而不再是与lnkfile相关联。这个时候我们再看看桌面的图标,桌面上所有的快捷方式的后缀名.lnk全部显示出来了,所有的快捷方式都不再可用。双击时会提示:windows无法打开此文件。

我们再次输入: assoc .lnk=lnkfile ,回车,确定,桌面一切又恢复了原状。

总之,如果是快捷方式的扩展名与文件类型之间的关联出现了问题,我们只需要输入: assoc .lnk=lnkfile,回车后即可以解决问题。

这样,如果我们知道一种扩展名所属的正确的文件类型,当这种扩展名与文件类型之间的关联出现问题的时候,我们只需要输入: assoc .ext=filetype ,按下回车键即可。 这个.ext代表的是文件扩展名,比如.lnk,这个filetype代表的是文件类型,比如lnkfile。如果我们不知道一种扩展名所关联的文件类型是什么,我们只需要在cmd中输入:assoc .ext回车。我们就能得到它所关联的文件类型是什么。

fytpe命令

我们现在知道了如何把扩展名与文件类型关联起来了,进一步地需要知道的是如何把文件类型与开放式命令关联起来。比如.txt扩展名所关联的文件类型是txtfile,而txtfile正常的情形下,总是用notepad.exe(记事本)来打开的,这个notepad.exe就是打开txtfile文件类型的开放式命令。

如何来修改这种文件类型与开放式命令之间的关联呢?这需要用到另外的一个重要的命令:ftype

让我们在cmd中输入: ftype /? 回车。我们可以得到这个命令的帮助。

ftype命令有两个作用,一是显示文件类型与开放式命令之间的关联,一是改写文件类型与开放式命令之间的关联。

如果我们想知道一种文件类型与什么样的开放式命令相关联,我们只需要在cmd中输入: ftype fileType ,按下回车键,我们就能够得到我们想要得到的结果。

这个fileType代表的是指定的文件类型,比如lnkfile,输入:ftype lnkfile,回车,正常情形下我们得到的命令结果是:没有找到文件类型“lnkfile”或者与其相关的开放式命令,这个结果表明正常的情形下,lnkfile是没有与任何开放式命令相关联的。

让我们输入:ftype lnkfile=notepad.exe ,回车,再输入:ftype lnkfile ,按下回车键,我们将得到的命令结果是: lnkfile=notepad.exe 这个结果表明了:文件类型lnkfile就与开放式命令notepad.exe关联上了。

这种情形下,仍然并不会影响快捷方式的打开。 那么,如何来清除这个关联,并且不与其它的开放式命令关联呢?我们只要输入: ftype lnkfile= ,然后回车即可。

在xp下,这个命令无效,但是,我们可以在xp下输入:ftype lnkfile= ,按下回车键,这个命令与前一个命令在外表上几乎看不出区别,区别就在于,前一个命令在=后面没有空格,而后一个命令在=后有一个空格。

让我们输入:ftype txtfile ,按下回车键,正常情形下,我们可以得到的命令结果是: txtfile=”%SystemRoot%\system32\NOTEPAD.EXE” %1 ,这个结果表明了:文件类型txtfile与开放式命令txtfile=”%SystemRoot%\system32\NOTEPAD.EXE” %1相关联。

如果一种文件类型与开放式命令之间的关联出现了问题,而我们知道正确的开放式命令是什么,这时我们只需要在cmd中输入如下命令并回车即可修复: ftype fileType=openCommandString ,这里fileType代表的是指定的文件类型,比如txtfile。

这里openCommandString代表的是开放式命令,比如notepad.exe,如果我们的txtfile与开放式命令之间的关联出了问题,我们只需要在cmd中输入: ftype txtfile=”%SystemRoot%\system32\NOTEPAD.EXE” %1 ,按下回车键,这样我们也就修复了txtfile文件类型与它的开放式命令之间的关联。

所谓开放式命令,其实就是对这种文件类型的打开方式。每一种注册了的文件类型,在注册表中都会存在着它的一个对应的注册表项,这个注册表项就是: HKEY_CLASSES_ROOT\filetype ,这个filetype代表的是文件类型,比如batfile文件类型所对应的注册表项就是: HKEY_CLASSES_ROOT\batfile ,ftype命令所修改的注册表项主要就是—HKEY_CLASSES_ROOT\filetype\shell\open\command—这个项的默认值的数据。

但需要注意的是,ftype命令所修改的并不仅仅是这个默认值的数据。因而直接在注册表中修改这个数据,并不能代替ftype命令的修改。

当然,ftype命令所修改的全部的东西都可以在注册表中找到,但是,我们那样一一地去找,远不如用ftype命令简单修改来得爽。

右键打开方式

前面我们谈到了扩展名与文件类型的关联,文件类型与开放式命令的关联(也就是文件的打开方式),看起来好象我们关于文件关联的问题就谈完了,实则不然,还有另外的一个重要的方面我们没有谈到。这就是我们右击一个文件,选择打开方式(并不是所有文件右键都有打开方式这个选项的),然后我们选择一个程序,并把“始终使用这种程序打开同类型文件”前的勾选上,点确认。比如本文开头的那位朋友,把所有快捷方式都选择以word程序打开一样。这样之后,这个文件类型也就与这个开放式命令关联起来了。

ftype命令是修改文件类型与开放式命令的关联的,而右键打开方式也可以修改文件类型与开放式命令的关联,这二者的关系是什么呢?

我们发现,ftype命令和右键打开方式,这二者所修改的注册表项是不同的。Ftype命令所修改的注册表项是: HKEY_CLASSES_ROOT\filetype ,这个filetype代表的是文件类型,比如HKEY_CLASSES_ROOT\lnkfile ,而右键打开方式所修改的主要注册表项是: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ext ,这个.ext代表的是文件扩展名,比如: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.lnk ,按照我的理解,ftype命令所修改的内容属于系统设置,而右键打开方式所修改的内容则属于用户设置,这二者所设置的实际对象是一样的,当二者不一致的时候,用户设置优先于系统设置。

三个注册表项

总之,文件关联所涉及到的注册表项主要是三个:
HKEY_CLASSES_ROOT\.ext
HKEY_CLASSES_ROOT\filetype
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ext

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 66 queries in 0.387 seconds