VBscriptを使用してフォルダーを作成しました。フォルダパスを指定すると、スクリプトは最後のフォルダのみを作成します。最後のフォルダが1つしか存在しない場合、失敗します...フォルダ構造全体を一度に作成するにはvbscriptコードが必要です。 UNIXのmkdir-pのように
この関数を使用できます:
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) AND strFldrPath <> "" Then
ensureFolderExists(FSO.GetParentFolderName(strFldrPath))
FSO.CreateFolder strFldrPath
End If
End Sub