附件 VBA 递归算法 批量提取 & 修改文件名
代码如下:
点击选择文件夹 按钮 选择文件夹, 在C 列输入新文件名后, 点击 重命名按钮 批量重命名
Option Explicit
Private Fso As Object, Mypath As String
Sub 选择文件夹()
Dim Fo
Call 清除
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "请选择要批量重命名文件的文件夹"
.Show
If .SelectedItems.Count = 0 Then Exit Sub
Mypath = .SelectedItems(1) & "\"
End With
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fo = Fso.getfolder(Mypath)
Call 递归(Fo)
End Sub
Sub 获取文件名(Folder)
Dim Fi, filename As String, r As Integer
For Each Fi In Folder.Files
r = Range("A65536").End(xlUp).Row + 1
filename = Fi.Name
Cells(r, 1) = Folder.Path & "\"
Cells(r, 2) = Fso.getbasename(filename)
Cells(r, 4) = "." & Fso.GetExtensionName(filename)
r = r + 1
Next
End Sub
Sub 递归(Folder)
Dim Fi, Fo
Call 获取文件名(Folder)
If Folder.subFolders.Count > 0 Then
For Each Fo In Folder.subFolders
Call 递归(Fo)
Next
End If
End Sub
Sub 重命名()
Dim i As Integer, r As Integer, Rng As Range
r = Range("A65536").End(xlUp).Row
For Each Rng In Range("C2:C" & r)
If Rng = "" Then MsgBox "请将新文件名填写完整!", 64, "提示": Exit Sub
Next
For i = 2 To Range("A65536").End(xlUp).Row
Name Cells(i, 1) & Cells(i, 2) & Cells(i, 4) As Cells(i, 1) & Cells(i, 3) & Cells(i, 4)
Next
MsgBox "文件名修改完成!", 64, "提示"
Call 清除
End Sub
Sub 清除()
Dim r As Integer
r = Range("A65536").End(xlUp).Row
If r = 1 Then Exit Sub
Range("A2:D" & r).ClearContents
End Sub
不用vba,只要将要统一格式命名的文件都放入同一个文件夹内,然后打开看图软件 ACDsee 在里面找到这个文件夹,全选这些文件后选择菜单栏上的“工具”-“批量重命名”,在“模板”中选“使用数字替换”,“开始于”是1,在下面的“模板”选项中只输入“#”,点“开始重命名”后就行了。
用ACDSEE,打开相应文件夹,其中有一个批量重命名的功能,将要统一格式命名的文件都放入同一个文件夹内,然后打开看图软件 ACDsee 在里面找到这个文件夹,全选这些文件后选择菜单栏上的“工具”-“批量重命名”,在“模板”中选“使用数字替换”,“开始于”是1,在下面的“模板”选项中只输入“#”,点“开始重命名”后就行了。
在dos中用dir取出文件名,将文件名复制在excel中,将变更后的文件名写在对应的文件名后面,将内容复制到批处理文件中运行
这是怎么用的?谁能说的详细一些?
比如我的图片放在d盘123文件夹里,我要怎么做呢?
用ACDSEE,打开相应文件夹,其中有一个批量重命名的功能,研究一下。