Помогите создать Folder1/Folder2 в Windows с помощью VBScript (обе папки ранее не существовали, я имею в виду создание многоуровневых папок @ a strech.)
Я создал папки, используя мой VBscript. Когда я даю путь к папке, скрипт создает только последнюю папку, если последняя, но одна папка не существует, она не будет работать... Мне нужен код VBScript для создания всей структуры папок за один раз. как mkdir -p в Unix
4 ответа
Решение
Вы можете использовать эту функцию:
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"
Вы должны разделить полный путь и создать каждую папку. Пример функции:
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
Поздно к показу, но объект Shell.Application у меня работает в XP следующим образом...
with CreateObject("Shell.Application")
set oFolder = .NameSpace("C:\")
if (not oFolder is nothing) then oFolder.NewFolder("a\b\c\d")
end with
Не соглашайтесь с другими ответами, но проверка, существует ли каждая папка, также хорошая идея - таким образом это не выдает ошибку, когда вы пытаетесь создать папку, которая уже существует
Sub ensureFolderExists(strFldrPath)
If Not FSO.FolderExists(strFldrPath) Then
If Not FSO.FolderExists(FSO.GetParentFolderName(strFldrPath)) then
ensureFolderExists(FSO.GetParentFolderName(strFldrPath))
End If
FSO.CreateFolder strFldrPath
End If
End Sub