【发布时间】:2015-06-05 03:42:57
【问题描述】:
我有一个 perl 脚本文件,其中包含具有长文件名的变量,例如 "C:\Program Files\Some Folder\MyFile.txt"。
路径中提到的文件不存在。如何将其转换为短文件名(8.3) 格式?
【问题讨论】:
-
您想知道不存在的文件的短名称吗?这与试图知道它的大小或创建日期一样:没有办法猜测它!
标签: perl batch-file
我有一个 perl 脚本文件,其中包含具有长文件名的变量,例如 "C:\Program Files\Some Folder\MyFile.txt"。
路径中提到的文件不存在。如何将其转换为短文件名(8.3) 格式?
【问题讨论】:
标签: perl batch-file
你不能。不保证短名称。您只能询问现有文件的短名称实际上是什么。请注意,如果该名称的短文件已存在于不同的长名称文件中,则短名称可能会更改。
call :myshortfunction c:\windows
echo %sn%
pause
:myshortfunction
set sn=%~s1
http://blogs.msdn.com/b/oldnewthing/archive/2004/04/14/113052.aspx
我相信每个人都看过自动生成的长文件名的短名称。对于长名称“Long name for file.txt”,如果有很多冲突,您可能会得到“LONGNA~1.TXT”或“LO18C9~1.TXT”。
您可能不知道的是,有时根本没有波浪号!
每个文件系统都决定如何实现短文件名。 Windows 95 独占使用“~n”方法。 Windows NT 添加了十六进制散列溢出技术。但有些文件系统(如 Novell)只是截断名称。 Novell 服务器上的“file.txt 的长名称”将显示为“LONGNAME.TXT”。
【讨论】: