【发布时间】:2011-05-23 09:14:36
【问题描述】:
我已经使用我的 VBscript 创建了文件夹。当我给出一个文件夹路径时,脚本只创建最后一个文件夹,如果最后一个文件夹不存在,它将失败......我需要一个 vbscript 代码来一次性创建整个文件夹结构。像 unix 中的 mkdir -p
【问题讨论】:
标签: windows scripting vbscript
我已经使用我的 VBscript 创建了文件夹。当我给出一个文件夹路径时,脚本只创建最后一个文件夹,如果最后一个文件夹不存在,它将失败......我需要一个 vbscript 代码来一次性创建整个文件夹结构。像 unix 中的 mkdir -p
【问题讨论】:
标签: windows scripting vbscript
你可以使用这个功能:
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"
【讨论】:
If path <> "" and not objFSO.FolderExists(path)
您必须拆分完整路径并创建每个文件夹。 示例函数:
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
【讨论】:
If Not FSO.FolderExists(FSO.GetParentFolderName(strFldrPath)) then 检查是完全多余的。只需在父级上调用ensureFolderExists,您已经进行了存在检查。您可能需要检查strFldrPath 是否为空字符串。
BuildFullPath :-))