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 |