我需要更改许多文件名,删除特殊字符(例如ç - 但如果可以针对一系列值进行定制,而不是一次一个,那就更好了)。我不精通vbs,但已经找到了一些代码并尝试使其满足我的需求,但仍然不起作用。
此代码会更改指定文件夹“C:\Users\user\Desktop\test”中的文件,但不会更改该路径后的子文件夹中的文件。
Set objFso = CreateObject("Scripting.FileSystemObject")
Set Folder = objFso.GetFolder("C:\Users\user\Desktop\test")
For Each Subfolder in Folder.SubFolders
For Each File In Folder.Files
sNewFile = File.Name
sNewFile = Replace(sNewFile,"ç","+")
if (sNewFile<>File.Name) then
File.Move(File.ParentFolder+"\"+sNewFile)
end if
Next
Next
请问有什么帮助吗?
答案1
您没有Subfolder
在循环中使用该元素。
另一种递归解决方案如下:
Set objFso = CreateObject("Scripting.FileSystemObject")
Browsefolder objFso.GetFolder("C:\Users\user\Desktop\test")
Sub Browsefolder(Folder)
For Each Subfolder In Folder.Subfolders
Browsefolder Subfolder
Next
For Each File In Folder.Files
sNewFile = File.Name
sNewFile = Replace(sNewFile, "ç", "+")
If (sNewFile <> File.Name) Then
File.Move (File.ParentFolder & "\" & sNewFile)
End If
Next
End Sub