ZetCode

VBScript CopyFile 方法

最后修改于 2025 年 4 月 9 日

VBScript 中的 CopyFile 方法是 FileSystemObject 的一部分。它将一个或多个文件从一个位置复制到另一个位置。此方法在脚本中提供了灵活的文件复制功能。如果指定,它可以覆盖现有文件。该方法同时处理单个文件和通配符模式。

CopyFile 对于 VBScript 中的文件管理任务至关重要。它简化了备份操作和文件分发。本教程将通过实际示例介绍 CopyFile 的用法。您将学习各种复制场景和错误处理技术。

CopyFile 方法概述

CopyFile 方法接受三个参数:源、目标和覆盖标志。源可以是单个文件或通配符模式。目标必须是文件夹路径或目标文件名。覆盖标志决定是否替换现有文件。

主要功能包括通配符支持和可选的覆盖控制。该方法会为无效路径或权限问题引发错误。CopyFile 在复制过程中会保留文件属性。了解此方法有助于创建健壮的文件管理脚本。

基本文件复制

此示例演示了 CopyFile 复制单个文件的最简单用法。它展示了如何指定源和目标路径。文件将以相同的名称复制到新位置。

basic_copy.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
source = "C:\Temp\report.txt"
destination = "C:\Backup\report.txt"

fso.CopyFile source, destination

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

该脚本创建一个 FileSystemObject 并调用 CopyFile。源文件 "report.txt" 被复制到 backup 文件夹。目标包括文件名。脚本通过消息确认完成。

使用通配符复制

此示例展示了如何使用通配符复制多个文件。星号 (*) 通配符匹配具有特定扩展名的所有文件。源文件夹中所有匹配的文件都将被复制到目标。

wildcard_copy.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
source = "C:\Logs\*.log"
destination = "D:\Archive\"

fso.CopyFile source, destination

Set fso = Nothing
WScript.Echo "All log files copied to archive"

该脚本将 C:\Logs 中的所有 .log 文件复制到 D:\Archive。目标指定为文件夹路径。每个文件都保留其原始名称。通配符支持对多个文件进行批量操作。

覆盖现有文件

此示例演示了 CopyFile 的覆盖参数。当设置为 True 时,现有文件将被替换。当设置为 False 时,如果目标已存在,操作将失败。如果省略,则默认为 True。

overwrite_copy.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
source = "C:\Data\config.ini"
destination = "C:\Backup\config.ini"

' False prevents overwriting existing files
fso.CopyFile source, destination, False

Set fso = Nothing
WScript.Echo "File copied (not overwritten if exists)"

该脚本尝试在不覆盖的情况下复制 config.ini。如果目标存在,则会发生错误。这可以防止意外数据丢失。生产脚本应添加错误处理。

复制到不同的文件名

此示例展示了如何在复制文件时更改其名称。目标包含一个新文件名。原始文件内容在新位置以新名称保留。

rename_copy.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
source = "C:\Reports\Q1.pdf"
destination = "C:\Archives\Quarterly_Report_2025_Q1.pdf"

fso.CopyFile source, destination

Set fso = Nothing
WScript.Echo "File copied with new name"

该脚本将 Q1.pdf 复制到一个新位置,并为其指定了一个描述性名称。源和目标都包含文件名。此技术对于版本控制或组织文件非常有用。原始文件保持不变。

CopyFile 中的错误处理

此示例演示了文件复制过程中的错误处理。VBScript 的 On Error Resume Next 可防止脚本因错误而终止。脚本会检查常见问题,例如文件丢失或访问被拒绝。

error_handling.vbs
On Error Resume Next

Set fso = CreateObject("Scripting.FileSystemObject")
source = "C:\NonExistent\file.txt"
destination = "C:\Backup\file.txt"

fso.CopyFile source, destination

If Err.Number <> 0 Then
    WScript.Echo "Error " & Err.Number & ": " & Err.Description
    Err.Clear
Else
    WScript.Echo "File copied successfully"
End If

Set fso = Nothing

该脚本尝试复制一个不存在的文件。错误处理程序会捕获并显示问题。这种方法使脚本在实际场景中更加健壮。文件操作始终应包含错误处理。

来源

FileSystemObject 文档

在本文中,我们探讨了 VBScript 中的 CopyFile 方法,涵盖了其用法和实际应用。从基本的文件复制到带有错误处理的高级场景,这些示例展示了可靠的文件操作。通过这些知识,您可以改进您的文件管理脚本。

作者

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

列出所有 VBScript 教程