VBS 替换文件夹和子文件夹中所有文件的文件名中的字符

VBS 替换文件夹和子文件夹中所有文件的文件名中的字符

我需要更改许多文件名,删除特殊字符(例如ç - 但如果可以针对一系列值进行定制,而不是一次一个,那就更好了)。我不精通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 

相关内容