DOS里面,长文件名如何用短文件名代替

DOS里面,长文件名如何用短文件名代替,第1张

引用问题“比如“C:\Program Files”应该写为“C:\Progra~1”,如果在出现一个文件夹的名称为“C:\Program File”又如何表示呢? ”

我们知道,在计算机中同一位置,也是就同一目录下不允许出现相同的名字,也就是说楼主的比喻是不恰当的。

当一个磁盘或目录下有长文件名时,由于DOS只能识别“83制”文件,所以会取长文件名的前“6个字母”加“~1”来表示,如同问题中的“C:\Program Files”应该写为“C:\Progra~1”,如果再有“Program Common”这样的文件,那么名字就变成这样了:

“C:\Program Common”应该写为“C:\Progra~1”,

“C:\Program Files”应该写为“C:\Progra~2”,

也就是说,按字母的顺序写的。

using SystemRuntimeInteropServices;

[DllImport("kernel32dll", CharSet = CharSetAuto)]

public static extern int GetLongPathName(string short_path, StringBuilder long_path, int long_len);

internal static string GetLongPath(string procpath)

{

if (procpathLength > 0)

{

try

{

if (procpathContains("~"))

{

StringBuilder sbrlong = new StringBuilder(256);

GetLongPathName(procpath, sbrlong, 256);

procpath = sbrlongToString();

}

}

catch(Exception ex)

{

return exMessage;

}

return path;

}

return stringEmpty;

}

//delphi 获取文件所在路径

ExtractFileDrive :返回完整文件名中的驱动器,如"C:"

ExtractFilePath:返回完整文件名中的路径,最后带“/”,如"C:/test/"

ExtractFileDir:返回完整文件名中的路径,最后不带“/” ,如"C:/test"

ExtractFileName:返回完整文件名中的文件名称 (带扩展名),如"mytestdoc"

ExtractFileExt 返回完整文件名中的文件扩展名(带),如"doc"

ExtractRelativePath : 返回相对路径,定义如下:

function ExtractRelativePath(const BaseName, DestName: string): string;

使用测试下如:

SysUtilsExtractRelativePath('C:/test','C:/Test/TestRelativePath'):返回TestRelativePath

SysUtilsExtractRelativePath('C:/Test/TestRelativePath','C:/test'):返回'/TestRelativePath'

SysUtilsExtractRelativePath('C:/Test/TestRelativePath/','C:/test'):返回'//TestRelativePath'

ExtractShortPathName :返回短文件名,即8+3,文件名长八位,扩展名为3号,为保持DOS系统兼容而存在

若想获取的文件名不带路径,可用:

ChangeFileExt(TIdAttachment(MsgMessagePartsItems[intIndex])Filename,''); 函数将扩展名改掉即可。

以上就是关于DOS里面,长文件名如何用短文件名代替全部的内容,包括:DOS里面,长文件名如何用短文件名代替、C#中已知文件的短文件名如何将其还原成长文件名、delphi如何获得指定路径文件的文件名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10136290.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存