Мне нужно изменить множество имен файлов, избавиться от специальных символов (например, - но лучше, если бы он мог быть адаптирован для списка значений вместо одного за раз). Я не опытный 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 ответ1

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 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .