Windows|如果文件夹名称和程序重复了,系统会如何处理


Windows|如果文件夹名称和程序重复了,系统会如何处理

文章图片


我们假设是这样一种情况 。
你有一个文件夹 , 比如C:\\Folder , 然后 , 同时你还有一个程序 , 名为C:\\Folder.exe 。 如果你在命令行窗口输入: C:\\Folder , 这个时候会发生什么?
外壳会执行名为Folder.exe的应用程序 , 而不是打开Folder文件夹 。
为什么这样设计?
因为下面的情况很常见 , 例如:

其中 , 在安装程序的根目录有一个程序setup.exe , 然后同时还有一个setup的文件夹 , 里面包含了安装过程中需要的各种文件 。
在Windows 95之前 , 你不能通过输入文件夹的名称打开一个文件夹(如果你想在资源管理器中打开它 , 则你需要使用指定的命令打开资源管理器并设置好参数) 。
结果就是 , 为那些早期Windows版本编写的程序可能会有如下一些行为:
> 打开名为”Setup”的软盘驱动器(那个时候 , CD驱动器是富家子弟才能玩的玩意儿) 。
> 从应用程序管理器中 , 点击文件 , 然后选择执行 。
> 在弹出的对话框中 , 输入”A:\\SETUP” , 然后点击回车 。
因为那个时候 , 压根还没有类似于”打开一个文件夹”的功能 , 所以唯一的方式就是执行程序A:\\SETUP.EXE 。
Windows 95设计为在同名的情况下 , 应用程序优先于文件夹 , 这样上面的行为就继续保持有效(开始菜单按钮替换了上面说的文件菜单) 。
然后发生的事情就是 , 每一个版本的Windows都会以程序作为优先 , 这就创造了一个潜在的环境 , 开发者需要依赖这个优先行为特性来编写他们自己的安装程序代码 。 一代代传下去之后 , 就不断加强了这种行为模式 。
但是 , 如果用户真的是想打开文件夹 , 而不是执行程序呢?
有办法 , 只需要在路径的结尾添加一个反斜杠(\\)就可以了 , 例如:(A:\\SETUP\\)就可以打开SETU文件夹了 。
总结小技巧已GET , 小故事也挺不错 。
不枉费我这生命中宝贵的五分钟 。
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《If a program and a folder have the same name the shell prefers the program》
【Windows|如果文件夹名称和程序重复了,系统会如何处理】