关于脚本:帮助使用VBScript在Windows中创建Folder1 / Folder2(这两个文件夹都不存在,我的意思是在strech上创建多层文件夹。)

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

我已经使用VBscript创建了文件夹。当我提供文件夹路径时,脚本仅创建最后一个文件夹,如果最后一个文件夹不存在,则它将失败...我需要一个vbscript代码来一次性创建整个文件夹结构。像unix

中的mkdir -p


您可以使用以下功能:

1
2
3
4
5
6
7
8
9
10
11
12
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命令:

1
2
Set objShell = CreateObject("Wscript.Shell")
objShell.Run"cmd /c mkdir X:\\folder1\\folder2\\folder3"


您必须拆分完整路径并创建每个文件夹。
函数示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
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中对我有效,如下所示...

1
2
3
4
with CreateObject("Shell.Application")
  set oFolder = .NameSpace("C:")
  if (not oFolder is nothing) then oFolder.NewFolder("a\\b\\c\\d")
end with

不同意其他答案,但是检查每个文件夹是否存在也是一个好主意-这样,当您尝试创建已经存在的文件夹时,它不会引发错误

1
2
3
4
5
6
Sub ensureFolderExists(strFldrPath)
    If Not FSO.FolderExists(strFldrPath) AND strFldrPath <>"" Then
        ensureFolderExists(FSO.GetParentFolderName(strFldrPath))
        FSO.CreateFolder strFldrPath
    End If
End Sub