VBScript Delete 方法
最后修改于 2025 年 4 月 9 日
VBScript 中的 Delete
方法是 FileSystemObject
的一部分。它会永久删除文件系统中的文件或文件夹。此方法功能强大,应谨慎使用,因为已删除的项目无法恢复。它通常用于文件清理操作。
Delete
可以删除文件和文件夹,并提供递归删除的选项。它会永久擦除数据,不会将其发送到回收站。本教程将通过实际示例涵盖 Delete
方法,以演示其在各种场景下的用法。
Delete 方法概述
Delete
方法在 File
和 Folder
对象上都可用。它接受一个可选参数来强制删除只读项。该方法会永久删除指定的文件系统对象。删除前不会请求确认。
主要功能包括即时永久删除和递归删除文件夹。它不支持通配符 - 必须指定确切的路径。如果目标不存在或正在使用中,Delete
会抛出错误。了解此方法有助于创建有效的文件管理脚本。
删除单个文件
此示例演示了 Delete
删除单个文件的最简单用法。它展示了基本的文件删除和错误处理。该脚本在尝试删除之前会检查文件是否存在。
Set fso = CreateObject("Scripting.FileSystemObject") filePath = "C:\Temp\old_report.txt" If fso.FileExists(filePath) Then Set file = fso.GetFile(filePath) file.Delete WScript.Echo "File deleted successfully" Else WScript.Echo "File does not exist" End If Set fso = Nothing
该脚本创建一个 FileSystemObject
并检查文件是否存在。如果找到,它会获取一个 File
对象并调用 Delete
。文件将被永久删除,无需确认。为避免错误,请始终在删除前验证其存在。
强制删除只读文件
此示例演示了如何使用强制参数删除只读文件。当 Delete
的第二个参数设置为 True
时,它会覆盖只读属性。这可确保无论文件属性如何都可以删除。
Set fso = CreateObject("Scripting.FileSystemObject") filePath = "C:\Temp\protected_file.txt" If fso.FileExists(filePath) Then Set file = fso.GetFile(filePath) file.Delete True ' Force deletion WScript.Echo "Read-only file deleted" Else WScript.Echo "File not found" End If Set fso = Nothing
该脚本尝试删除一个可能为只读的文件。True
参数会强制删除,无论其属性如何。这在清理可能被标记为只读的系统生成文件时非常有用。请谨慎使用。
删除空文件夹
此示例演示了删除空目录。如果文件夹包含文件,Delete
方法会失败。通过此方法只能删除完全为空的文件夹。该脚本包含存在性检查。
Set fso = CreateObject("Scripting.FileSystemObject") folderPath = "C:\Temp\EmptyFolder" If fso.FolderExists(folderPath) Then Set folder = fso.GetFolder(folderPath) folder.Delete WScript.Echo "Folder deleted successfully" Else WScript.Echo "Folder does not exist" End If Set fso = Nothing
该脚本在尝试删除之前检查文件夹是否存在。如果找到且为空,则会被永久删除。对于非空文件夹,将发生错误。此方法对于清理脚本中的临时目录很有用。
递归删除文件夹
此示例展示了如何递归删除文件夹及其所有内容。FileSystemObject
的 DeleteFolder
方法处理此操作。第二个参数强制删除文件夹内的只读项。
Set fso = CreateObject("Scripting.FileSystemObject") folderPath = "C:\Temp\OldProject" If fso.FolderExists(folderPath) Then fso.DeleteFolder folderPath, True WScript.Echo "Folder and contents deleted" Else WScript.Echo "Folder not found" End If Set fso = Nothing
该脚本使用 DeleteFolder
删除文件夹及其所有内容。True
参数强制删除只读项。这功能强大但也很危险 - 请确保指定了正确的路径。适用于完整清理操作。
使用通配符删除多个文件
虽然 Delete
不直接支持通配符,但我们可以结合使用 FileSystemObject
方法来实现。此示例演示了如何在目录中删除匹配模式的多个文件。
Set fso = CreateObject("Scripting.FileSystemObject") folderPath = "C:\Temp\Logs" filePattern = "*.bak" If fso.FolderExists(folderPath) Then Set folder = fso.GetFolder(folderPath) For Each file In folder.Files If LCase(fso.GetExtensionName(file.Name)) = "bak" Then file.Delete WScript.Echo "Deleted: " & file.Name End If Next Else WScript.Echo "Folder not found" End If Set fso = Nothing
该脚本枚举目录中的所有文件,并删除匹配模式的文件。这里我们检查文件扩展名,但也可以使用其他条件。这种方法比直接支持通配符提供了更多的控制。适用于日志文件轮换和清理。
来源
在本文中,我们探讨了 VBScript 中的 Delete
方法,涵盖了其用法和实际应用。从单个文件删除到递归文件夹删除,这些示例展示了文件系统清理技术。通过这些知识,您可以在脚本中实现强大的文件管理。