如何实现文件名的修改。

yoxo 2003-11-25 08:51:58
如果实现文件名的批量修改。
...全文
96 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
boydgmx 2003-11-25
  • 打赏
  • 举报
回复
to cainiao17() :
你说的这种情况直接 shell "cmd.exe /C Ren C:\hlm\*.txt *.htm"不就得了
smalle 2003-11-25
  • 打赏
  • 举报
回复
先查找出所有的文件名路径再用Name修改不得吗?
cainiao17 2003-11-25
  • 打赏
  • 举报
回复
比如:要将C:\hlm\下的hlm(001).txt到hlm(050).txt改为hlm(001).htm到hlm(050).htm

For i= 1 To 50
Name "C:\hlm\" & "hlm(" & format(i,"000") & ").txt" As "C:\hlm\" & "hlm(" & format(i,"000") & ").htm"
Next i
boydgmx 2003-11-25
  • 打赏
  • 举报
回复
Name 语句

重新命名一个文件、目录、或文件夹。

语法

Name oldpathname As newpathname

示例
本示例使用 Name 语句来更改文件的名称。示例中假设所有使用到的目录或文件夹都已存在。

Dim OldName, NewName
OldName = "OLDFILE": NewName = "NEWFILE" ' 定义文件名。
Name OldName As NewName ' 更改文件名。


OldName = "C:\MYDIR\OLDFILE": NewName = "C:\YOURDIR\NEWFILE"
Name OldName As NewName ' 更改文件名,并移动文件。

但是,Name 参数不能包括多字符 (*) 和单字符 (?) 的统配符。
所以,如果需要批量修改,就应该将 Name 语句写在对文件的遍历循环中。如下:

'文件系统递归遍历
Private Sub DoRecursion(ByVal Source As String)
Dim f, fc

Set CurrFolder = FSys.GetFolder(Source)

If CurrFolder.Attributes <> (System Or Hidden Or Directory) Then

If CurrFolder.Files.Count > 0 Then
Set fc = CurrFolder.Files
For Each f In fc
If f.Attributes <> (System Or Hidden) Then
Name f.path,DestPath
End If
Next
End If

'当前文件夹下还有子文件夹
If CurrFolder.SubFolders.Count > 0 Then
Set fc = CurrFolder.SubFolders
For Each f In fc
Call DoRecursion(f) '递归调用
Next
End If
End If
End Sub
cryptonym 2003-11-25
  • 打赏
  • 举报
回复
Function Rename( _
ByVal FileName As String _
) As Integer


Return Code Description
0 Success.
2 Access denied.
8 Unspecified failure.
9 Invalid object.
10 Object already exists.
11 File system not NTFS.
12 Platform not Windows NT or Windows 2000.
13 Drive not the same.
14 Directory not empty.
15 Sharing violation.
16 Invalid start file.
17 Privilege not held.
21 Invalid parameter.

7,771

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧