vbs 解释和增加功能:被移动的文件如果重复则覆盖旧文件 移动文件和子文件夹MoveFilesAndFolders objFSOGetFolderAFolder objFSOGetFolderBFolderSet objFSO = NothingSub MoveFilesAndFoldersobjSourceFolder objDestFolder 移动文件 For Each obj
这段VBScript代码实现了将一个文件夹及其子文件夹中的文件和文件夹移动到另一个目标文件夹的功能。具体的步骤如下:
- 定义了一个名为
MoveFilesAndFolders的子过程,该过程接受两个参数:源文件夹对象objSourceFolder和目标文件夹对象objDestFolder。 - 使用一个
For Each循环遍历源文件夹中的所有文件,并使用Move方法将每个文件移动到目标文件夹中。 - 使用另一个
For Each循环遍历源文件夹中的所有子文件夹。 - 对于每个子文件夹,首先创建一个新的目标文件夹路径
strNewDestFolder,将其设为目标文件夹路径加上子文件夹的名称。 - 使用
CreateFolder方法创建新的目标文件夹。 - 递归调用
MoveFilesAndFolders过程,将当前子文件夹和对应的新目标文件夹作为参数传递给它,实现对子文件夹中的文件和子文件夹的移动。
要实现文件重复时覆盖旧文件的功能,可以在移动文件时进行判断。具体的方法是在移动文件之前,先检查目标文件夹中是否存在同名的文件,如果存在,则先删除该文件,再进行移动操作。修改后的代码如下:
Sub MoveFilesAndFolders(objSourceFolder, objDestFolder)
' 移动文件
For Each objFile In objSourceFolder.Files
Dim strDestFilePath
strDestFilePath = objDestFolder.Path & "\" & objFile.Name
' 判断目标文件夹是否存在同名文件,如果存在则覆盖旧文件
If objFSO.FileExists(strDestFilePath) Then
objFSO.DeleteFile strDestFilePath
End If
objFile.Move strDestFilePath
Next
' 递归移动子文件夹
For Each objSubFolder In objSourceFolder.SubFolders
Dim strNewDestFolder
strNewDestFolder = objDestFolder.Path & "\" & objSubFolder.Name
' 判断目标文件夹是否存在同名文件夹,如果存在则删除旧文件夹
If objFSO.FolderExists(strNewDestFolder) Then
objFSO.DeleteFolder strNewDestFolder, True
End If
objFSO.CreateFolder strNewDestFolder
MoveFilesAndFolders objSubFolder, objFSO.GetFolder(strNewDestFolder)
Next
End Sub
修改后的代码在移动文件之前会先检查目标文件夹中是否存在同名文件,如果存在,则使用DeleteFile方法删除该文件。在移动子文件夹之前也会进行类似的检查和处理。这样就可以实现如果目标文件夹中存在同名文件或文件夹,则覆盖旧文件或文件夹的功能。
原文地址: https://www.cveoy.top/t/topic/jgc9 著作权归作者所有。请勿转载和采集!