Помогите создать Folder1 / Folder2 в Windows с помощью VBScript (обе папки ранее не существовали, я имею в виду создание многоуровневых папок @ a strech.) - PullRequest
13 голосов
/ 10 декабря 2010

Я создал папки, используя мой VBscript.Когда я даю путь к папке, сценарий создает только последнюю папку, если последняя, ​​но одна папка не существует, она не будет работать ... Мне нужен код VBScript для создания всей структуры папок за один раз.как mkdir -p в unix

Ответы [ 4 ]

33 голосов
/ 10 декабря 2010

Вы можете использовать эту функцию:

Const PATH = "X:\folder0\folder1\folder2"

Set fso = CreateObject("Scripting.FileSystemObject")

BuildFullPath PATH

Sub BuildFullPath(ByVal FullPath)
If Not fso.FolderExists(FullPath) Then
BuildFullPath fso.GetParentFolderName(FullPath)
fso.CreateFolder FullPath
End If
End Sub

Или просто вызовите команду mkdir из вашего скрипта:

Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd /c mkdir X:\folder1\folder2\folder3"
9 голосов
/ 10 декабря 2010

Вы должны разделить полный путь и создать каждую папку. Пример функции:

Function CreateFolderRecursive(FullPath)
  Dim arr, dir, path
  Dim oFs

  Set oFs = WScript.CreateObject("Scripting.FileSystemObject")
  arr = split(FullPath, "\")
  path = ""
  For Each dir In arr
    If path <> "" Then path = path & "\"
    path = path & dir
    If oFs.FolderExists(path) = False Then oFs.CreateFolder(path)
  Next
End Function
2 голосов
/ 11 марта 2014

Поздно к показу, но у меня в XP работает объект Shell.Application, как показано ниже ...

with CreateObject("Shell.Application")
  set oFolder = .NameSpace("C:\")
  if (not oFolder is nothing) then oFolder.NewFolder("a\b\c\d")
end with
1 голос
/ 18 июля 2018

Не соглашайтесь с другими ответами, но проверка, существует ли каждая папка, также хорошая идея - таким образом, это не выдает ошибку, когда вы пытаетесь создать папку, которая уже существует

Sub ensureFolderExists(strFldrPath)
    If Not FSO.FolderExists(strFldrPath) AND strFldrPath <> "" Then
        ensureFolderExists(FSO.GetParentFolderName(strFldrPath))
        FSO.CreateFolder strFldrPath
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...