powershell-使用文件名列表删除文件

C L*_*amb 1 powershell powershell-3.0

我从堆栈溢出中获得了以下代码,并且工作正常。

$TargetFolder = “Pathofyourfolder”
$Files = Get-ChildItem $TargetFolder -Exclude (gc List.txt)  -Recurse
foreach ($File in $Files)
{ 
    write-host “Deleting File $File” -foregroundcolor “Red”;
    Remove-Item $File | out-null
}
Run Code Online (Sandbox Code Playgroud)

现在,我要删除列表中具有文件名的文件。我尝试了上述方法的一些变体,例如用Include替换Exclude,但没有成功。有人可以帮忙吗?

小智 6

你可以试试这个:

 Get-Content .\filesToDelete.txt | ForEach-Object {Remove-Item $_}
Run Code Online (Sandbox Code Playgroud)

它更容易而且很容易解释($_代表 for 循环的当前变量)。


n01*_*01d 5

$targetFolder = "D:\TEST_123"
$fileList = "D:\DeleteList.txt"

Get-ChildItem -Path "$targetFolder\*" -Recurse -Include @(Get-Content $fileList) | Remove-Item -Verbose
Run Code Online (Sandbox Code Playgroud)

为了-Include工作,您应该\*在删除列表的末尾指定文件夹名称和文件名,并带有扩展名。上面的代码对我有用,仅删除文件夹及其所有子文件夹中的指定文件。

我也用-Verbose代替foreachWrite-Host


Fox*_*loy 1

-Include我发现大多数时候 该参数实际上并没有按照您期望的方式工作。

\n\n

所以我建议这段代码只是让它快速工作。

\n\n
$TargetFolder = \xe2\x80\x9cPathofyourfolder\xe2\x80\x9d\n$Files = Get-ChildItem $TargetFolder -Recurse| Where Name -in (gc List.txt) \nforeach ($File in $Files)\n{ \n    write-host \xe2\x80\x9cDeleting File $File\xe2\x80\x9d -foregroundcolor \xe2\x80\x9cRed\xe2\x80\x9d;\n    Remove-Item $File | out-null\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果你愿意的话,你可以通过搞砸它来让它更快一点-include,但坦率地说,我认为这很糟糕,而且这会起作用。

\n