![VBS 替换文件夹和子文件夹中所有文件的文件名中的字符](https://linux22.com/image/1534258/VBS%20%E6%9B%BF%E6%8D%A2%E6%96%87%E4%BB%B6%E5%A4%B9%E5%92%8C%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6.png)
我需要更改许多文件名,删除特殊字符(例如ç - 但如果可以针对一系列值进行定制,而不是一次一个,那就更好了)。我不精通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