2015-04-02 8 views
1

Я хочу иметь возможность создавать определенное количество папок и подпапок внутри каталога. У меня уже есть код, который выполняет цикл и создает папки и подпапки. Есть ли способ создать определенное количество этих папок? Также я хочу иметь возможность создавать их последовательно. Например, у меня уже есть 2000 папок. Я хотел бы создать еще тысячу, но он начнется с 2001 до 3000. Я в основном хочу автоматизировать код, который у меня ниже, поэтому никто не должен заходить и продолжать изменять значения в скрипте. Спасибо!Создание папок и вложенных папок с использованием VBS

Вот код:

Dim oFSO,Folder 
Set oFSO = CreateObject("Scripting.FileSystemObject") 
For i = 1001 To 2000 
' x=msgbox("Directorie " & i ,64, "MakeDir") 

If Not oFSO.FolderExists(i) Then 
    oFSO.CreateFolder i 
End If 
If Not oFSO.FolderExists(i & "/Text") Then 
    oFSO.CreateFolder i & "/Text" 
End If 
If Not oFSO.FolderExists(i & "/Text") Then 
    oFSO.CreateFolder i & "/Text" 
End If 
If Not oFSO.FolderExists(i & "/Text") Then 
    oFSO.CreateFolder i & "/Text" 
End If 
If Not oFSO.FolderExists(i & "/TestData") Then 
    oFSO.CreateFolder i & "/TestData" 
End If 
Next 
+0

Где бы вы установки нужного количества? Внешний ящик ввода или что-то еще? – Robert

+0

Нет, это было бы просто внутри самого кода. Я планирую использовать планировщик задач для создания этих папок. Поэтому я просто хочу, чтобы он работал сам по себе. – adit123

+0

А, возможно, назовите их что-то вроде '" folder_no_ "+ i', а затем, перед запуском цикла, проанализируйте имя созданной последней папки? – Robert

ответ

1

Дайте этому попытку ...

BaseFolder = "C:\temp" 'Root folder to look for/create subfolders in 
MaxSize = 5    'the number of characters to allow in folder name 
PaddingCharacter = "0" 'padding folder names with zeros for proper sorting 
NumFolders = 10   'number of additional folder to create 

intStart = GetLastFolder(BaseFolder) 

If IsNull(intStart) Then 
    intStart = 1 
Else 
    'skip 
End If 

For i = intStart To intStart + NumFolders 
    strFolderName = BaseFolder & "\" & RightPad(i, MaxSize, PaddingCharacter) 
    Wscript.Echo strFolderName 
    CreateFolders(strFolderName) 
Next 

Function GetLastFolder(strFolder) 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set objFolder = fso.GetFolder(BaseFolder) 
    Set subFlds = objFolder.SubFolders 

    For Each fld in subFlds 
     s = fld.Name 
    Next 

    x=Len(s)  
    For i=0 to x-1 
     If Mid(s,i+1,1) = "0" Then 
      'skip 
     Else 
      s = Mid(s,i+1,x) 
      Exit For 
     End If 
    Next 

    GetLastFolder = s 
End Function 


Function CreateFolders(i) 
    Dim oFSO,Folder 
    Set oFSO = CreateObject("Scripting.FileSystemObject") 

    If Not oFSO.FolderExists(i) Then 
     oFSO.CreateFolder i 
    End If 
    If Not oFSO.FolderExists(i & "/Text") Then 
     oFSO.CreateFolder i & "/Text" 
    End If 
    If Not oFSO.FolderExists(i & "/Text") Then 
     oFSO.CreateFolder i & "/Text" 
    End If 
    If Not oFSO.FolderExists(i & "/Text") Then 
     oFSO.CreateFolder i & "/Text" 
    End If 
    If Not oFSO.FolderExists(i & "/TestData") Then 
     oFSO.CreateFolder i & "/TestData" 
    End If 
End Function 

Function RightPad(strText, intLen, chrPad) 
    'Example: RightPad("1000", 7, "0") = "00" 
    'Example: RightPad("1000", 4, "0") = "1000" 
    RightPad = Right(String(intLen, chrPad) & strText, intLen) 
End Function 
Смежные вопросы