VB.NET从递归搜索重新创建在其他位置找到的文件夹
我对所有文件和子文件夹进行递归搜索,但我想在另一个目录中创建确切的文件夹结构 我将非常感谢您的帮助,我已经尝试过自己做这件事,也尝试过上网,但是我还没有找到任何东西 因此,我希望ConvertDir中的文件夹结构在SaveDir位置重新创建,而不包含任何文件。我也希望在发现它们的同时创造它们,但我不知道这是否可行或明智 这将创建在SaveDir顶层找到的文件夹,但文件夹位置不正确 这是我的代码副本:VB.NET从递归搜索重新创建在其他位置找到的文件夹,vb.net,recursion,directory,create-directory,Vb.net,Recursion,Directory,Create Directory,我对所有文件和子文件夹进行递归搜索,但我想在另一个目录中创建确切的文件夹结构 我将非常感谢您的帮助,我已经尝试过自己做这件事,也尝试过上网,但是我还没有找到任何东西 因此,我希望ConvertDir中的文件夹结构在SaveDir位置重新创建,而不包含任何文件。我也希望在发现它们的同时创造它们,但我不知道这是否可行或明智 这将创建在SaveDir顶层找到的文件夹,但文件夹位置不正确 这是我的代码副本: On Error Resume Next Dim ObjFolder Dim
On Error Resume Next
Dim ObjFolder
Dim ObjSubFolders
Dim ObjSubFolder
Dim ObjFiles
Dim ObjFile
Dim objFileSecuritySettings
Dim intRetVal
Dim objSD
Dim objFolderSecuritySettings
ObjFolder = FSO.GetFolder(FolderName)
ObjFiles = ObjFolder.Files
For Each ObjFile In ObjFiles 'Write all files to output files
objFileSecuritySettings = _
objWMIService.Get("Win32_LogicalFileSecuritySetting='" & ObjFile.Path & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
If intRetVal = 0 Then
ObjOutFile.WriteLine(ObjFile.Path) ' write in CSV format
End If
Next
ObjSubFolders = ObjFolder.SubFolders 'Getting all subfolders
For Each ObjFolder In ObjSubFolders
objFolderSecuritySettings = _
objWMIService.Get("Win32_LogicalFileSecuritySetting='" & ObjFile.Path & "'")
intRetVal = objFolderSecuritySettings.GetSecurityDescriptor(objSD)
Directory.CreateDirectory(SaveDir + "\\" + ObjFolder.name)
If intRetVal = 0 Then
ObjOutFile.WriteLine(ObjFolder.Path) ' write in CSV format
ObjOutFile.WriteLine(ObjFolder.ObjSubFolders)
End If
Gather(ObjFolder.Path)
Next
先谢谢你
AntonSK您可以使该方法传递到它开始于的根文件夹,以保持目录树的完整性。 并按如下方式使用:
ReCreateDirectoryStructure("C:\somefolder\", "D:\")
Private Sub ReCreateDirectoryStructure(ByVal sourceDir As String, _
ByVal targetDir As String, Optional ByVal rootDir As String = "")
If rootDir = String.Empty Then
rootDir = sourceDir
End If
Dim folders() As String = IO.Directory.GetDirectories(sourceDir)
For Each folder As String In folders
Directory.CreateDirectory(folder.Replace(rootDir, targetDir))
ReCreateDirectoryStructure(folder, targetDir, rootDir)
Next
End Sub
我认为这应该是非常可行的,类似于将
Directory.CreateDirectory(SaveDir+“\\\”+ObjFolder.name)
替换为Directory.CreateDirectory(ObjFolder.path.Replace(FolderName,SaveDir))
不幸的是,这个方法与我已有的方法相同,它将创建文件夹,但会将它们全部放在SaveDir的顶层,而不是将文件夹和子文件夹放在正确的区域。这不是VB.net,这是经典的ASP!