PowerShell:如何跳过无法访问的文件
有时,在 PowerShell 中,您可能会收到一条错误消息,告诉您无法访问特定文件,因为该文件当前正被另一个进程使用。
抑制此错误的最简单方法是使用 -ErrorAction SilentlyContinue,它告诉 PowerShell 以静默方式继续任务而不显示错误。
以下是在实践中使用此语法的一种常见方法:
Remove-Item "C:\my\path\*" -Recurse -Force -ErrorAction SilentlyContinue
此特定示例删除我们指定的路径中的所有文件。如果当前正在使用任何文件,则 PowerShell 将直接跳过这些文件,而不显示错误消息。
以下示例展示了如何在实践中使用此语法。
示例:如何跳过 PowerShell 中无法访问的文件
假设我们当前目录有以下路径:
C:\Users\bobbi\data1我们可以使用 Get-ChildItem cmdlet 来查看此目录中的所有文件和文件夹:
我们可以看到该目录下有三个文件:
- regions.txt
- 名册.csv
- 时间表.csv
假设我们要删除此目录中的所有文件,但假设文件 schedules.csv 当前已在我们的计算机上打开并正在使用。
假设我们尝试使用 Remove-Item cmdlet 和以下语法来删除目录中的每个文件:
Remove-Item "C:\Users\bobbi\data1\*" -Recurse -Force以下屏幕截图显示了如何在实践中使用此语法:
我们收到一条错误消息,告诉我们 schedules.csv 无法访问,因为它正在被另一个进程使用。
为了在删除当前目录下的所有文件时跳过这个文件,我们可以添加命令-ErrorAction SilentlyContinue,如下:
Remove-Item "C:\Users\bobbi\data1\*" -Recurse -Force -ErrorAction SilentlyContinue
以下屏幕截图显示了如何在实践中使用此语法:
请注意,当我们再次运行 Get-ChildItem cmdlet 时,我们可以看到除 schedules.csv 之外的所有文件都已被删除,并且这次我们没有收到任何错误消息。
注意:您可以在此处找到 PowerShell 中 -ErrorAction 的完整文档。


