Vbscript-用于检查每个子文件夹是否存在的脚本
我正在编写一个脚本,基本上将文件夹和文件从服务器复制到本地计算机。在处理这个问题时,我发现我需要一个函数,它基本上是一个完整文件夹路径的字符串,将其拆分并检查每个文件夹是否存在。如果没有,请创建文件夹 所以,我在想一个聪明的方法来做这件事,这样我以后可以重用代码。 我希望它接受一个参数,完整路径的字符串。代码完成了剩下的工作 编辑:这是Jean-François Corbett的完整代码。我会给你9000多块谢谢Vbscript-用于检查每个子文件夹是否存在的脚本,vbscript,directory,Vbscript,Directory,我正在编写一个脚本,基本上将文件夹和文件从服务器复制到本地计算机。在处理这个问题时,我发现我需要一个函数,它基本上是一个完整文件夹路径的字符串,将其拆分并检查每个文件夹是否存在。如果没有,请创建文件夹 所以,我在想一个聪明的方法来做这件事,这样我以后可以重用代码。 我希望它接受一个参数,完整路径的字符串。代码完成了剩下的工作 编辑:这是Jean-François Corbett的完整代码。我会给你9000多块谢谢 Public Sub createFolderStructure(ByVal st
Public Sub createFolderStructure(ByVal strFullPath)
Set objFSO = CreateObject("Scripting.FileSystemObject")
' How many levels are there?
nLevel = 0
strParentPath = strFullPath
Do Until strParentPath = ""
strParentPath = objFSO.GetParentFolderName(strParentPath)
nLevel = nLevel + 1
Loop
For iLevel = 1 To nLevel
' Figure out path for directory at level iLevel
strParentPath = strFullPath
For j = 1 To nLevel - iLevel
strParentPath = objFSO.GetParentFolderName(strParentPath)
Next
' Does this directory exist? If not, create it.
If objFSO.FolderExists(strParentPath) = False Then
Set newFolder = objFSO.CreateFolder(strParentPath)
End If
Next
End Sub
既然您已经有了
objFSO
,为什么不使用它的方法呢。实际上,FileSystemObject
已经解决了其中的大部分问题,所以省去一些麻烦吧;不需要重新发明轮子
编辑:下面是一个我认为您想要做的示例。适应你认为合适的
strFullPath = "C:\aaaa\Test\Vbscript" ' 4 levels
' How many levels are there?
nLevel = 0
strParentPath = strFullPath
Do Until strParentPath = ""
strParentPath = FSO.GetParentFolderName(strParentPath)
nLevel = nLevel + 1
Loop
Debug.Print nLevel ' nLevel = 4 for this example
For iLevel = 1 To nLevel
' Figure out path for directory at level iLevel
strParentPath = strFullPath
For j = 1 To nLevel - iLevel
strParentPath = FSO.GetParentFolderName(strParentPath)
Next j
' Does this directory exist? If not, create it.
Debug.Print iLevel, strParentPath, FSO.FolderExists(strParentPath)
If FSO.FolderExists(strParentPath) = False Then
Set newFolder = FSO.CreateFolder(strParentPath)
End If
Next iLevel
既然您已经有了
objFSO
,为什么不使用它的方法呢。实际上,FileSystemObject
已经解决了其中的大部分问题,所以省去一些麻烦吧;不需要重新发明轮子
编辑:下面是一个我认为您想要做的示例。适应你认为合适的
strFullPath = "C:\aaaa\Test\Vbscript" ' 4 levels
' How many levels are there?
nLevel = 0
strParentPath = strFullPath
Do Until strParentPath = ""
strParentPath = FSO.GetParentFolderName(strParentPath)
nLevel = nLevel + 1
Loop
Debug.Print nLevel ' nLevel = 4 for this example
For iLevel = 1 To nLevel
' Figure out path for directory at level iLevel
strParentPath = strFullPath
For j = 1 To nLevel - iLevel
strParentPath = FSO.GetParentFolderName(strParentPath)
Next j
' Does this directory exist? If not, create it.
Debug.Print iLevel, strParentPath, FSO.FolderExists(strParentPath)
If FSO.FolderExists(strParentPath) = False Then
Set newFolder = FSO.CreateFolder(strParentPath)
End If
Next iLevel
您是否在没有显式
选项的情况下编码??如果是这样,你就是自找麻烦!是的,但那是因为我知道我在做什么;)不,真的。我通常使用选项显式。但是当我只是像这样画代码的时候就不行了:)你是不是在没有显式的选项的情况下编码的??如果是这样,你就是自找麻烦!是的,但那是因为我知道我在做什么;)不,真的。我通常使用选项显式。但当我只是像这样画代码的时候就不行了:)太好了!这正是我所想的:)我简直不敢相信这不是以前创建的:)好的,我会试试这个,然后在完成后更新代码:)我想我应该更经常地检查msdn..嗯,你有什么建议吗?我的意思是,我可以得到父文件夹的名称并检查它是否存在。但是我不能一次创建文件夹和子文件夹,可以吗?也就是说,如果GetParentFolderName给了我“C:\Temp\Test\Vbscript”,那么我就不能用子文件夹和我能做的一切来创建它了?哇,这真的做到了!:)只是编辑了一些东西,但这是合理的!但我必须经历这一切,以确保我真正了解这里发生的一切。但我会的!:)美好的这正是我所想的:)我简直不敢相信这不是以前创建的:)好的,我会试试这个,然后在完成后更新代码:)我想我应该更经常地检查msdn..嗯,你有什么建议吗?我的意思是,我可以得到父文件夹的名称并检查它是否存在。但是我不能一次创建文件夹和子文件夹,可以吗?也就是说,如果GetParentFolderName给了我“C:\Temp\Test\Vbscript”,那么我就不能用子文件夹和我能做的一切来创建它了?哇,这真的做到了!:)只是编辑了一些东西,但这是合理的!但我必须经历这一切,以确保我真正了解这里发生的一切。但我会的!:)