VBS 脚本优化:高效移动文件和文件夹
此脚本可以进行如下优化:
- 使用变量来存储用户输入的文件夹路径,而不是使用输入框。
- 使用 With 语句简化对文件系统对象的操作。
- 使用 Early Binding 方式引用 FileSystemObject 对象,以提高性能。
- 在移动文件时,可以选择是否覆盖已存在的目标文件。
- 添加错误处理代码,以便在出现错误时提供适当的提示。
优化后的代码如下所示:
On Error Resume Next ' 跳过错误
' 设置源文件夹和目标文件夹路径
a = CreateObject("Scripting.FileSystemObject").GetFolder(".").Path ' 当前文件路径
AFolder = "填写文件位置:" ' 使用变量存储用户输入
BFolder = "填写文件位置:" ' 使用变量存储用户输入
' 创建文件系统对象-文件-文件夹
Set objFSO = CreateObject("Scripting.FileSystemObject")
A1 = a & "\文件1.xlsx"
A2 = a & "\文件2.xlsx"
Set T1 = CreateObject("Scripting.FileSystemObject").OpenTextFile(A1, 2, -1)
Set T2 = CreateObject("Scripting.FileSystemObject").OpenTextFile(A2, 2, -1)
' 获取源文件夹对象
Set objFolder = objFSO.GetFolder(AFolder)
' 移动文件到目标文件夹
MoveFiles objFolder, BFolder
Set T1 = Nothing
Set T2 = Nothing
' 移动文件到目标文件夹的函数
Sub MoveFiles(objFolder, BFolder)
' 遍历源文件夹中的所有文件和子文件夹
For Each objFile In objFolder.Files
' 构建目标文件的路径
strNewPath = objFSO.BuildPath(BFolder, objFile.Name)
T1.Write "" & vbCrLf & "" & objFile
'T1.Write "" & vbCrLf & "" & strNewPath
' 移动文件,并选择是否覆盖已存在的目标文件
objFile.Move strNewPath, True ' 将最后一个参数设为 False 以避免覆盖已存在的目标文件
Next
' 递归处理子文件夹
For Each objSubFolder In objFolder.SubFolders
MoveFiles objSubFolder, objFSO.BuildPath(BFolder, objSubFolder.Name)
T2.Write "" & vbCrLf & "" & objSubFolder
'T2.Write "" & vbCrLf & "" & BFolder & "\" & objSubFolder.Name
Next
End Sub
' 添加错误处理代码
If Err.Number <> 0 Then
MsgBox "发生错误:" & vbCrLf & Err.Description, vbExclamation, "错误"
End If
'CreateObject("WScript.Shell").Popup("完成!"), 1, "温馨提示"
'objFSO.DeleteFile(A1), True ' 删除临时文件
'objFSO.DeleteFile(A2), True ' 删除临时文件
WScript.Quit ' 结束
原文地址: https://www.cveoy.top/t/topic/bRw9 著作权归作者所有。请勿转载和采集!