ZetCode

VBScript CopyFolder 方法

最后修改于 2025 年 4 月 9 日

VBScript 中的 CopyFolder 方法属于 FileSystemObject。它将文件夹及其内容从一个位置复制到另一个位置。此方法处理所有子文件夹和文件的递归复制。它常用于备份脚本和文件管理操作。

CopyFolder 提供了覆盖现有文件或跳过它们的选项。它通过一次方法调用简化了文件夹复制任务。本教程将通过实际示例涵盖 CopyFolder,以演示其在各种场景中的用法。

CopyFolder 方法概述

CopyFolder 方法将源路径和目标路径作为参数。可选的第三个参数控制覆盖行为。该方法可通过 VBScript 脚本中的 FileSystemObject 访问。

主要功能包括递归文件夹复制和通配符支持。它可以用一个命令复制整个目录树。如果路径无效或访问被拒绝,CopyFolder 会引发错误。理解此方法有助于自动化文件管理任务。

基本文件夹复制

此示例演示了 CopyFolder 复制文件夹的最简单用法。它展示了如何将文件夹及其内容复制到新位置。该操作包括源文件夹内的所有子文件夹和文件。

basic_copyfolder.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
source = "C:\Temp\Reports"
destination = "D:\Backups\Reports"

fso.CopyFolder source, destination

WScript.Echo "Folder copied successfully"
Set fso = Nothing

脚本创建一个 FileSystemObject 并调用 CopyFolder。将 "Reports" 文件夹从 C:\Temp 复制到 D:\Backups。如果目标文件夹存在,除非启用覆盖,否则会引发错误。

带覆盖选项的复制

此示例展示了如何使用覆盖参数来控制文件替换。当设置为 True 时,目标中的现有文件将被覆盖。False 会在复制操作期间跳过现有文件。

overwrite_copy.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
source = "C:\Projects\Website"
destination = "D:\Backups\Website"

' True enables overwriting existing files
fso.CopyFolder source, destination, True

WScript.Echo "Folder copied with overwrite enabled"
Set fso = Nothing

脚本复制 Website 文件夹并覆盖目标中任何现有的文件。第三个参数 (True) 启用了覆盖行为。没有此参数,在大多数 Windows 版本中默认值为 True。

在文件夹复制中使用通配符

CopyFolder 支持通配符来复制多个匹配的文件夹。此示例展示了如何使用星号 (*) 通配符。只有匹配模式的文件夹才会被复制到目标。

wildcard_copy.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
source = "C:\Projects\Web*"
destination = "D:\Backups"

fso.CopyFolder source, destination

WScript.Echo "All Web* folders copied successfully"
Set fso = Nothing

脚本将 C:\Projects 中所有以 "Web" 开头的文件夹复制到 D:\Backups。每个匹配的文件夹在目标中都保留其原始名称。通配符在选择要复制的文件夹时提供了灵活性。

处理复制错误

此示例演示了文件夹复制操作中的错误处理。它使用 VBScript 的 On Error Resume Next 来捕获和报告复制失败。正确的错误处理使脚本在生产环境中更加健壮。

error_handling.vbs
On Error Resume Next

Set fso = CreateObject("Scripting.FileSystemObject")
source = "C:\NonExistentFolder"
destination = "D:\Backups"

fso.CopyFolder source, destination

If Err.Number <> 0 Then
    WScript.Echo "Error copying folder: " & Err.Description
Else
    WScript.Echo "Folder copied successfully"
End If

On Error GoTo 0
Set fso = Nothing

脚本尝试复制一个不存在的文件夹,从而触发一个错误。错误处理程序显示一条描述性消息,而不是崩溃。这种方法对于无人值守的脚本执行至关重要。

复制到网络位置

此示例展示了如何将文件夹复制到网络共享。过程与本地复制类似,但需要适当的网络权限。UNC 路径用于指定网络位置。

network_copy.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
source = "C:\ImportantData"
destination = "\\Server\Shared\Backups"

fso.CopyFolder source, destination

WScript.Echo "Folder copied to network location"
Set fso = Nothing

脚本将 ImportantData 复制到网络共享。目标使用 UNC 格式 (\\Server\Share)。网络复制可能需要身份验证和适当的共享权限。大型复制在网络连接上可能需要更长时间。

来源

FileSystemObject 文档

在本文中,我们探讨了 VBScript 中的 CopyFolder 方法,涵盖了其用法和实际应用。从基本文件夹复制到网络操作,这些示例展示了可靠的文件夹复制。有了这些知识,您就可以通过强大的复制功能来增强您的文件管理脚本。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有多年的编程经验。我从 2007 年开始撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面有八年以上的经验。

列出所有 VBScript 教程