将长文件名转换为短文件

时间:2015-06-05 03:42:58

标签: perl batch-file

我的perl脚本文件包含具有长文件名的变量,如"C:\Program Files\Some Folder\MyFile.txt"

路径中提到的文件不存在。如何将其转换为短文件名(8.3)格式?

1 个答案:

答案 0 :(得分:3)

你做不到。短名称无法保证。您只能询问现有文件的实际名称。请注意,如果不同的长名称文件已存在该名称的短文件,则短名称可能会更改。

call :myshortfunction c:\windows
echo %sn%
pause

:myshortfunction
set sn=%~s1

http://blogs.msdn.com/b/oldnewthing/archive/2004/04/14/113052.aspx

  

我确信每个人都看到了长文件名的自动生成的短名称。对于长名称“file.txt的长名称”,如果存在大量冲突,您可能会得到“LONGNA~1.TXT”或可能是“LO18C9~1.TXT”。

     

你可能不知道的是,有时根本没有波浪形!

     

每个文件系统决定如何实现短文件名。 Windows 95专门使用“~n”方法。 Windows NT添加了十六进制散列溢出技术。但是一些文件系统(如Novell)只是截断了名称。 Novell服务器上的“file.txt的长名称”将出现在“LONGNAME.TXT”中。