使用VBScript重命名子文件夹

时间:2015-11-10 09:55:11

标签: vbscript directory rename renaming

我需要在所选文件夹的子文件夹中添加计数器模式。

到目前为止我的VBScript是:

AuswahlTitel = "Bitte Datei oder Verzeichnis auswählen" 
StartOrdner = "17"  'Arbeitsplatz 
Set Dateiauswahl = CreateObject("Shell.Application").BrowseForFolder(0,AuswahlTitel,16,StartOrdner) 
Set Ordner = Dateiauswahl.Self 

RenameFolders(CreateObject("Scripting.FileSystemObject").GetFolder(Ordner.Path))

Sub RenameFolders(Ordner)
    Dim i, name, newName, number, a
    i = 0
    newName = ""
    For Each Unter In Ordner.SubFolders
        name = Unter.Name
        If name.EndsWith("B1") Then
            i = i + 1
            If i<10 Then
                number = "00" & i
            ElseIf i<100 Then
                number = "0" & i
            Else
                number = i
            End if
        End If
        a = Split(name,"_")
        newName = a(0) & "_" & a(1) & "_" & a(2) & "_" & a(3) & "_Heft_" & number & "_" & a(4) & "_" & a(5)
        Unter.Name = newName
    Next
End Sub

出于某些不明原因,我只收到以下错误:Babel REPL

所以命令name = Unter.Name似乎不起作用,我不知道为什么。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

找到解决方案。 正如Lankymart在他的评论中提到的那样,我将.Net与VBS混合在一起。

工作代码将是:

AuswahlTitel = "Bitte Datei oder Verzeichnis auswählen" 
StartOrdner = "17"  'Arbeitsplatz 
Set Dateiauswahl = CreateObject("Shell.Application").BrowseForFolder(0,AuswahlTitel,16,StartOrdner) 
Set Ordner = Dateiauswahl.Self 

RenameFolders(CreateObject("Scripting.FileSystemObject").GetFolder(Ordner.Path))

Sub RenameFolders(Ordner)
    Dim i, name, newName, number, fso, Unter
    i = 0
    newName = ""
    Set fso = CreateObject("Scripting.FileSystemObject")
    For Each Unter In Ordner.SubFolders
        'Set Unter = fso.GetFolder(Unter.Path)
        name = CStr(Unter.Name)
        If (InStr(name,"B1")>0) Then
            i = i + 1
            If i<10 Then
                number = "00" & i
            ElseIf i<100 Then
                number = "0" & i
            Else
                number = i
            End if
        End If
        a = Split(name,"_")
        newName = a(0) & "_" & a(1) & "_" & a(2) & "_" & a(3) & "_Heft_" & number & "_" & a(4) & "_" & a(5)
        Unter.Name = newName
    Next
End Sub

如您所见,我将name.EndsWith("B1")替换为InStr(name,"B1")>0