ZetCode

VBScript Delete 方法

最后修改于 2025 年 4 月 9 日

VBScript 中的 Delete 方法是 FileSystemObject 的一部分。它会永久删除文件或文件夹。此方法功能强大,应谨慎使用,因为删除的项目无法恢复。它通常用于文件清理和维护脚本。

Delete 可以删除文件和文件夹,并提供递归删除的选项。它会永久擦除数据,而不会将其发送到回收站。本教程将通过实际示例演示 Delete 在各种场景下的用法。

Delete 方法概述

Delete 方法需要一个必需参数(路径)和一个可选参数(强制删除)。它不返回值,但如果操作失败,可能会引发错误。该方法可通过 VBScript 脚本中的 FileSystemObject 访问。

主要功能包括永久删除和递归删除文件夹。它不提供撤销功能或将项目移至回收站。Delete 可与绝对路径和相对路径配合使用。理解此方法有助于创建有效的文件管理脚本。

删除单个文件

此示例演示了 Delete 删除单个文件的最简单用法。它展示了基本的文件删除和错误处理。脚本在尝试删除之前会检查文件是否存在。

delete_file.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
filePath = "C:\Temp\old_report.txt"

If fso.FileExists(filePath) Then
    fso.DeleteFile(filePath)
    WScript.Echo "File deleted successfully"
Else
    WScript.Echo "File does not exist"
End If

Set fso = Nothing

该脚本创建一个 FileSystemObject 并检查文件是否存在。如果文件存在,则调用 DeleteFile 将其删除。该操作是永久且即时的。始终验证文件是否存在以避免错误。

删除带内容的文件夹

此示例展示了如何删除包含所有内容的整个文件夹。带有 True 参数的 DeleteFolder 方法启用了递归删除。它会删除目标中的所有子文件夹和文件。

delete_folder.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
folderPath = "C:\Temp\OldProjects"

If fso.FolderExists(folderPath) Then
    fso.DeleteFolder folderPath, True
    WScript.Echo "Folder and contents deleted"
Else
    WScript.Echo "Folder does not exist"
End If

Set fso = Nothing

脚本在尝试删除之前会检查文件夹是否存在。第二个参数 True 会强制删除所有内容。此操作是不可逆的,会删除文件夹层次结构中的所有内容。请极其谨慎使用。

使用通配符删除多个文件

VBScript 可以使用通配符删除匹配模式的多个文件。此示例演示了临时文件的批量删除。脚本使用 GetFolderFiles 集合来查找匹配项。

wildcard_delete.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
tempFolder = "C:\Temp"
Set folder = fso.GetFolder(tempFolder)

For Each file In folder.Files
    If LCase(fso.GetExtensionName(file.Name)) = "tmp" Then
        file.Delete
        WScript.Echo "Deleted: " & file.Name
    End If
Next

Set fso = Nothing

该脚本遍历 Temp 文件夹中的所有文件。它会检查每个文件的扩展名并删除 .tmp 文件。此方法允许根据文件属性进行选择性删除。通配符提供了强大的文件管理功能。

处理 Delete 错误

此示例演示了在使用 Delete 方法时如何进行适当的错误处理。它包含一个用于安全尝试删除的子例程。错误处理可防止脚本因失败而终止。

error_handling.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
filePath = "C:\Temp\locked_file.txt"

On Error Resume Next
fso.DeleteFile filePath

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

On Error GoTo 0
Set fso = Nothing

该脚本使用 On Error Resume Next 来处理潜在的错误。如果删除失败,它会显示错误消息而不会崩溃。此方法对于健壮的文件管理脚本至关重要。始终在处理错误后清除错误。

删除只读文件

此示例展示了如何通过先更改只读文件的属性来删除它们。脚本在删除之前会删除只读标志。此技术可以解决常见的删除障碍。

readonly_delete.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
filePath = "C:\Temp\important.log"

If fso.FileExists(filePath) Then
    Set file = fso.GetFile(filePath)
    file.Attributes = 0 ' Remove all attributes
    file.Delete
    WScript.Echo "Read-only file deleted"
Else
    WScript.Echo "File not found"
End If

Set fso = Nothing

脚本首先获取文件对象以修改其属性。将属性设置为 0 会删除包括只读在内的所有特殊标志。更改属性后,即可正常删除文件。此方法可确保成功删除受保护的文件。

来源

FileSystemObject 文档

在本文中,我们探讨了 VBScript 中的 Delete 方法,涵盖了其用法和实际应用。从单个文件删除到复杂的文件夹移除,这些示例展示了可靠的文件系统管理。通过这些知识,您可以创建健壮的清理和维护脚本。

作者

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

列出所有 VBScript 教程