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