虽然在 Windows95/98 中已经都可以使用长文件名/目录 (最长可以到255个字节),但是在您将长文件名的文件或目录存文件时,系统同时给了它一个可以相容于以前 MS-DOS 时代的 8.3 格式的文件名称!
到目前为止,还是有些软件会使用 8.3 格式的文件名称,在安装这些软件时,它们写到注册文件中的资料,仍然采用 8.3 格式的文件名称,所以有时候,您在维护系统时,必须知道目前这些已经转成 8.3 格式的文件名称,原来的长文件名是什么。
在 问题:如何将长文件名转成短文件名格式 (MS-DOS 8.3) ,我们已经讲过长文件名转成短文件名,当时是使用 API 来做,过程上还蛮麻烦的,但是相反的,要从短文件名转成长文件名,过程却比较简单,也不需要用到 API,只要使用 Dir( ) 就可以了!
'请将以下的模组放到声明区中:
Public Function GetLongFilename(ByVal sShortName As String) As String
Dim sLongName As String
Dim sTemp As String
Dim iSlashPos As Integer
'在短文件名之后加上倒斜线 "\",避免 Instr 造成错误
sShortName = sShortName & "\"
'略过磁盘代号,从第四码开始
iSlashPos = InStr(4, sShortName, "\")
'从文件名之第四码之后,一段一段处理在二个倒斜线 "\"之间的字串转换
While iSlashPos
sTemp = Dir(Left$(sShortName, iSlashPos - 1), vbNormal + vbHidden + vbSystem + vbDirectory)
If sTemp = "" Then 'Error 52 - Bad File Name or Number
GetLongFilename = ""
Exit Function
End If
sLongName = sLongName & "\" & sTemp
iSlashPos = InStr(iSlashPos + 1, sShortName, "\")
Wend
'将转换后的文件名加上原先略过的磁盘代号,变成完整的全路径文件名
GetLongFilename = Left$(sShortName, 2) & sLongName
End Function
'实际使用范例如下:
Private Sub Command1_Click()
'假设 C:\Program Files\Common Files 是一个正确的全路径文件名或目录
Print GetLongFilename("C:\PROGRA~1\COMMON~1")
End Sub
'结果就是 C:\Program Files\Common Files。
VB部分相关文章推荐
※VB快速读取 TextBox 第 N 行的资料
※VB禁止使用 Alt-Tab 或 Ctrl-Alt-Del
※生成迷宫的程序
※另一方法转换大小写
※VB控件注册 - 利用资源文件将dll、ocx打包进exe文件
※VB利用资源文件进行工作
※[转]vb高效编程(优化)
※VB阳历转阴历
※纯VB代码取得硬盘的物理序列号
※VB获得磁盘的文件系统
※做VB的,经常注册和反注册OCX控件和DLL链
※VB从程序中生成Exe文件
※VB6监视/操作剪贴板示例(VB6.0代码)
※VB6里自动提交/自动填表的一种相对通用的方案
※VB移动没有标题的窗体
※VB随机字母的函数
※VB删除带子文件夹和文件的文件夹
※VB怎样屏蔽 Alt+F4键
※VB 隐藏进程
※vb屏蔽文本框点右键时的弹出菜单
※VB手控Combobox的打开或收起
※在VB中INI文件的读写、删除(对中文支持很好)
※vb全局热键的写法(占很少的资源)
※vb取消文本框的粘贴功能
※VB常用文件操作类
※VB获取特殊文件夹
※VB获取windows各常用目录的函数(模块)
※VB生成太极图
※VB:常用内部函数大全,你会了几个呢?
※vb中SendMessage函数
※精简VB程序的代码
※VB:将数字转换为大写中文
※VB:设定 MsgBox 在若干时间之后若无回应则自动关闭
※VB:读取及设定NumLock/CapsLock/ScrollLock的值
※VB:您知道 Mid$ 函量可以放在 '=' 的左方吗
※VB后台获得按键,并执行自己的函数(非钩子及热键)
※VB:将短文件名格式转成长文件名
※在vb中使用Iphlpapi.dll获取网络信息(上)
※在vb中使用Iphlpapi.dll获取网络信息(下)
更多精彩>>>
评论