ZetCode

VBScript Copy 方法

最后修改于 2025 年 4 月 9 日

VBScript 中的 Copy 方法是 FileSystemObject 的一部分。它允许将文件或文件夹从一个位置复制到另一个位置。此方法对于 VBScript 中的文件管理操作至关重要。它提供了一种简单的方法来复制文件,同时保持其内容和属性。

如果指定,Copy 可以覆盖现有文件。它同时适用于绝对路径和相对路径。本教程将通过实际示例介绍 Copy 方法,以演示其在文件操作中的各种应用。

Copy 方法概述

Copy 方法可用于 FileFolder 对象。对于文件,它将文件复制到新位置。对于文件夹,它会复制整个文件夹结构。该方法将目标路径作为必需参数。

一个可选的覆盖参数决定了目标存在时的行为。如果目标存在且覆盖设置为 False,则该方法会引发错误。理解此方法对于文件管理脚本至关重要。

基本文件复制

此示例演示了 Copy 方法最简单的用法,用于复制文件。它展示了如何将文件从一个位置复制到另一个位置。目标可以是完整的路径,也可以只是当前目录中的文件名。

basic_copy.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set sourceFile = fso.GetFile("C:\Temp\source.txt")

sourceFile.Copy "C:\Backup\destination.txt"

WScript.Echo "File copied successfully"

Set sourceFile = Nothing
Set fso = Nothing

该脚本创建一个 FileSystemObject 并获取对源文件的引用。然后调用 Copy 方法并提供目标路径。如果成功,它将显示确认消息。所有对象在最后都会被正确清理。

带覆盖选项的复制

此示例展示了如何在复制文件时控制覆盖行为。第二个参数决定是否覆盖现有文件。当为 True 时,它允许覆盖;当为 False 时,它会阻止覆盖。

copy_overwrite.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set sourceFile = fso.GetFile("C:\Reports\current.csv")

' True allows overwriting existing file
sourceFile.Copy "D:\Archives\backup.csv", True

WScript.Echo "File copied with overwrite enabled"

Set sourceFile = Nothing
Set fso = Nothing

该脚本将 CSV 文件复制到存档位置。True 参数确保任何具有相同名称的现有文件都将被替换。这对于希望进行覆盖操作的常规备份操作很有用。

复制多个文件

此示例演示了如何使用循环复制多个文件。它展示了如何处理文件夹中的所有文件并将它们复制到另一个位置。Files 集合用于遍历文件。

copy_multiple.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\SourceFiles")

For Each file In folder.Files
    file.Copy "D:\Backup\" & file.Name, True
Next

WScript.Echo "All files copied successfully"

Set folder = Nothing
Set fso = Nothing

该脚本获取源文件夹中的所有文件。每个文件都被复制到备份位置,同时保留原始文件名。所有复制操作都将覆盖参数设置为 True。这种模式在备份脚本中很常见。

复制整个文件夹

此示例展示了如何复制包含所有内容的完整文件夹。而是使用 FileSystemObjectCopyFolder 方法,而不是 Copy 方法。它会递归地复制所有子文件夹和文件。

copy_folder.vbs
Set fso = CreateObject("Scripting.FileSystemObject")

' Copy entire folder structure
fso.CopyFolder "C:\Projects\Website", "D:\Backup\Website", True

WScript.Echo "Folder copied with all contents"

Set fso = Nothing

该脚本将整个 Website 文件夹复制到备份位置。True 参数启用对目标中现有文件的覆盖。此方法对于创建文件夹结构的完整备份非常强大。

条件文件复制

此示例演示了基于文件属性的条件复制。它展示了如何仅复制满足特定条件的文件。在这种情况下,仅复制今天修改过的文本文件。

conditional_copy.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\DailyLogs")
today = Date()

For Each file In folder.Files
    If LCase(fso.GetExtensionName(file.Name)) = "txt" And _
       DateValue(file.DateLastModified) = today Then
        file.Copy "D:\Archive\" & file.Name, True
    End If
Next

WScript.Echo "Conditional copy completed"

Set folder = Nothing
Set fso = Nothing

该脚本检查每个文件的扩展名和修改日期。仅复制今天修改过的 .txt 文件到存档。这演示了在复制之前的高级文件过滤。此类逻辑对于选择性备份操作很有用。

来源

FileSystemObject 文档

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

作者

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

列出所有 VBScript 教程