使用powershell和.txt文件删除多个文件

时间:2018-01-05 02:19:37

标签: powershell

我有一个.txt,其中包含我要删除的超过1000个文件的名称。我的.txt文件没有文件路径。我要删除的文件分布在多个文件夹中,但它们都在同一个驱动器中。有没有办法使用powershell或命令提示符搜索我的驱动器中的所有文件,其名称与我的.txt文件中列出的文件相同并删除它们?

2 个答案:

答案 0 :(得分:0)

假设您的PowerShell提示当前设置在您想要开始搜索的根位置,并且该文件位于同一目录中:

gc .\MyListOfFilesIWantToDelete.txt | %{gci $_ -Recurse | Remove-Item -WhatIf}

注意,你必须删除-whatif

或者,假设您的文件位于打开PowerShell的其他位置(例如:〜/ Documents),并且您想扫描D:驱动器。这应该有效:

gc .\MyListOfFilesIWantToDelete.txt | %{gci D:\ -Filter $_ -Recurse -ErrorAction SilentlyContinue | Remove-Item -WhatIf}

注意我把SilentlyContinue。这是因为如果您无法访问搜索路径中的文件夹,则会看到很多红色。

或者,您可以使用文件列表加载变量..

$thesefiles = gc .\mylistoffilesiwanttodelete.txt

..并直接使用Remove-Item cmdlet ..

Remove-Item -Path D:\Folder -Include $thesefiles -Recurse -WhatIf

或一次性不加载变量:

Remove-Item -Path D:\Folder -Include $(gc .\mylistoffilesiwanttodelete.txt) -Recurse -WhatIf

同样,我正在使用-WhatIf进行测试。另外,我注意到过去在不同版本的PowerShell上使用get-childitem会有不同的行为。我用5.1测试了这些。

答案 1 :(得分:-1)

从以下powershell命令更改目录

以下命令将允许您删除特定目录中的.txt文件

Get-ChildItem C:\*.txt -file -r | remove-item