Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Help To create Folder1/Folder2 in Windows using VBScript ( Both the folders not exists before, i mean to create multilevel folders @ a strech.)

I have created folders using my VBscript. when i give a folder path, the script is creating only the last folder, if the last but one folder does not exists, it will fail... I need a vbscript code to create the entire folder structure on the single go. like mkdir -p in unix

like image 276
Vijay Athreyan Avatar asked Dec 10 '10 09:12

Vijay Athreyan


3 Answers

You could use this function:

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

Or simply call the mkdir command from your script:

Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd /c mkdir X:\folder1\folder2\folder3"
like image 197
Pascal Rodriguez Avatar answered Nov 11 '22 15:11

Pascal Rodriguez


You must split the full path and create each folder. Example function:

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
like image 36
wickie79 Avatar answered Nov 11 '22 15:11

wickie79


Late to the show, but the Shell.Application object works for me in XP, as follows ...

with CreateObject("Shell.Application")
  set oFolder = .NameSpace("C:\")
  if (not oFolder is nothing) then oFolder.NewFolder("a\b\c\d")
end with
like image 42
Red Avatar answered Nov 11 '22 14:11

Red