细心的你,可能会发现这么个情况。
当通过系统的控制面板设置环境变量时,TEMP和TMP这两个环境变量被悄悄地转换成了它们的短文件名版本(如果可以转换的话)。
我们不禁要问了,这是为什么?
聪明的你,也一定猜到了:为了兼容性。
对于大部分的批处理文件(.BAT文件)来说,它们会假设 %TEMP% 和 %TMP% 这两个环境变量不会包含内部的空格字符。(可能其他的一些应用程序也会做出这样的假设,但是一般批处理脚本中特别容易出现这样的问题。)
上面我也提到一个所谓的”如果可以转换的话”,因为你可以禁止系统自动生成短文件名,在这种情况下,环境变量指向的路径不会有对应的短文件名,从而保持它原本的长文件名格式。
如果你更加大胆一些,将TEMP/TMP环境变量设置为一个包含空格且没有对应短文件名的目录路径,则你会发现,系统的有些部分不能正常工作了。请不要怪我没提醒你哦。
总结
我打开了我的Win10,并没有看到文中所说的短文件名的情况。
可能是因为那些古老的操作系统已经随大江东去了吧。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Why does the system convert TEMP to a short file name?》
领取专属 10元无门槛券
私享最新 技术干货