ZetCode

VBScript DeleteFile 方法

最后修改于 2025 年 4 月 9 日

VBScript 中的 DeleteFile 方法是 FileSystemObject 的一部分。它会永久地从文件系统中删除指定的文件。此方法功能强大,应谨慎使用,因为通过 VBScript 无法恢复已删除的文件。它通常用于文件清理和维护脚本。

DeleteFile 可选地强制删除只读文件。如果文件不存在或正在使用中,它会引发错误。本教程将通过实际示例介绍 DeleteFile,演示其用法和错误处理。

DeleteFile 方法概述

DeleteFile 方法接受一个必需参数(文件路径)和一个可选参数(强制标志)。它会永久地从磁盘中删除指定的文件。该方法可通过 VBScript 脚本中的 FileSystemObject 使用。

主要功能包括可选的只读文件删除和即时文件删除。它不会将文件移至回收站。DeleteFile 可处理绝对路径和相对路径。理解此方法有助于创建健壮的文件管理脚本。

基本文件删除

此示例演示了 DeleteFile 的最简单用法,用于删除单个文件。它展示了如何指定文件路径和处理基本错误。脚本尝试删除当前目录中的 "temp.txt"。

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

On Error Resume Next
fso.DeleteFile "temp.txt"
If Err.Number <> 0 Then
    WScript.Echo "Error deleting file: " & Err.Description
End If
On Error GoTo 0

Set fso = Nothing

脚本创建一个 FileSystemObject 并调用 DeleteFile。错误处理确保在文件不存在时能够优雅地失败。如果成功,该方法将永久删除文件。删除前不会请求确认。

删除只读文件

此示例展示了如何使用可选的第二个参数强制删除只读文件。强制参数会覆盖只读属性。没有它,只读文件的删除将失败。

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

On Error Resume Next
fso.DeleteFile "readonly.txt", True
If Err.Number <> 0 Then
    WScript.Echo "Error deleting file: " & Err.Description
End If
On Error GoTo 0

Set fso = Nothing

True 参数强制删除,无论文件属性如何。这在清理系统生成的文件时非常有用。脚本包含错误处理,以捕获潜在问题,如锁定的文件或权限不足。

使用通配符删除多个文件

DeleteFile 支持通配符,以删除匹配模式的多个文件。此示例演示了如何删除目录中所有 .tmp 文件。通配符提供了强大的批量文件操作。

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

On Error Resume Next
fso.DeleteFile "C:\Temp\*.tmp"
If Err.Number <> 0 Then
    WScript.Echo "Error deleting files: " & Err.Description
End If
On Error GoTo 0

Set fso = Nothing

脚本删除 C:\Temp 中的所有扩展名为 .tmp 的文件。通配符操作是原子性的——要不就删除所有匹配的文件,要不就不删除任何文件。错误处理至关重要,因为一次失败就会中止整个操作。

使用绝对路径删除文件

此示例演示了如何使用绝对路径删除文件。绝对路径指定了从驱动器根目录开始的完整文件位置。在脚本中,它们比相对路径更可靠。

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

On Error Resume Next
fso.DeleteFile "C:\Users\Public\Documents\old_data.csv"
If Err.Number <> 0 Then
    WScript.Echo "Error deleting file: " & Err.Description
End If
On Error GoTo 0

Set fso = Nothing

脚本指定了 old_data.csv 的完整路径。绝对路径确保无论当前目录如何,都能准确地定位到目标文件。错误处理可捕获文件丢失或被锁定的情况。

删除前检查文件是否存在

此示例通过在尝试删除前检查文件是否存在来展示最佳实践。FileExists 方法可避免不必要的错误。组合操作使脚本更健壮。

safe_delete.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
filePath = "C:\Logs\app.log"

If fso.FileExists(filePath) Then
    On Error Resume Next
    fso.DeleteFile filePath
    If Err.Number = 0 Then
        WScript.Echo "File deleted successfully"
    Else
        WScript.Echo "Error deleting file: " & Err.Description
    End If
    On Error GoTo 0
Else
    WScript.Echo "File does not exist"
End If

Set fso = Nothing

脚本首先使用 FileExists 验证文件是否存在。这可以防止因尝试删除不存在的文件而产生的错误。删除操作仍然包含在错误处理中,以应对其他潜在问题。这种方法使脚本更可靠。

来源

FileSystemObject 文档

在本篇文章中,我们探讨了 VBScript 中的 DeleteFile 方法,涵盖了其用法和实际应用。从单个文件删除到通配符操作,这些示例展示了可靠的文件删除方法。有了这些知识,您就可以通过适当的删除功能来增强您的文件管理脚本。

作者

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

列出所有 VBScript 教程