建议不要对生产环境中的文件夹使用别名,可能产生不必要的麻烦。
为了分类管理各类文件,我通过创建不同文件夹的方式分类储存,但考虑到在命令行中或编程时使用方便,文件夹的命名都保持着使用驼峰命名法英文命名,虽然都是很简单的单词,但还是觉得英文看着不得劲😜
但Windows中却存在如桌面(Desktop)
等文件夹,这些文件夹在资源管理器中显示为中文,但它们的文件路径确实英文路径。一直很好奇这是怎么做到的,但苦于不知道以什么关键词进行搜索,直到在搜索desktop.ini
相关资料的过程中看到了For the use of the LocalizedResourceName property这篇提问,尤其是在下方的回答中给出的关于LocalizedResourceName
使用中文字符串的方法意外地简单令我喜出望外,故写下这篇博文用作存档。
实现方法
创建desktop.ini文件
文件夹通常以标准的文件夹图标显示,desktop.ini
文件的一个常见用途是为一个文件夹指定一个自定义的图标或缩略图。你也可以使用desktop.ini
创建一个信息提示,显示关于文件夹的信息,并控制文件夹行为的某些方面,例如为文件夹或文件夹中的项目指定本地化的名称。
使用以下过程通过desktop.ini
定制文件夹的样式:
- 使用PathMakeSystemFolder使文件夹成为系统文件夹,这将设置文件夹上的只读位,表示应该启用为Desktop.ini保留的特殊行为。你也可以在命令行中通过使用
attrib +s FolderName
使文件夹成为系统文件夹; - 为该文件夹创建一个
desktop.ini
文件。你应该把它标记为隐藏和系统,以确保它对普通用户是隐藏的; - 确保你创建的Desktop.ini文件是Unicode格式的,这对于存储可以显示给用户的本地化字符串来说是必要的。
设置别名
desktop.ini
文件是一个文本文件,允许用户指定如何查看文件系统文件夹,其中[.ShellClassInfo]
部分允许通过为多个条目分配值来自定义文件夹的视图。
文件夹别名的自定义正是通过向desktop.ini
中[.ShellClassInfo]
下添加LocalizedResourceName
属性进行设置的,故首先需要打开desktop.ini
文件进行编辑(若不存在则可以手动创建),并将并LocalizedResourceName
属性的值设置为我们想要的别名。
需要将文件内容修改如下:
[.ShellClassInfo]
LocalizedResourceName=别名
之后保存即可,但要注意的是为了解决中文乱码的问题,需将desktop.ini
保存为UTF-16 LE(记事本中的 Unicode)格式。
奇技淫巧
通过使用别名的方式就可以将文件夹命名为本来不被允许的形式,比如可以包含\/:*?"<>|
这些字符。
另外还可以使文件夹的名称不可见,但是直接将LocalizedResourceName
属性的值设置为空格是不可行的,正确的方法是利用Unicode中的一些特殊字符,这些字符可以通过Alt+数字
的方式输入如Alt+129
便可以使文件夹不显示名称。当然,用这个方法也还可以输入各种各样的特殊字符,让文件夹的名称更加灵活多变。