使用Powershell删除数组中定义的文件

iLe*_*ing 5 powershell

是否可以定义文件名数组(不同文件夹中的所有文件),然后在循环中删除所有文件名,或者执行其他操作?

实际上我需要使用mklink创建一些符号链接到一个文件,将这些链接放在不同的文件夹中,如果有的话,替换旧的链接.

Kei*_*ill 7

删除文件名数组很简单:

Remove-Item foo.txt,c:\temp\bar.txt,baz\baz.txt
Run Code Online (Sandbox Code Playgroud)

或者通过变量:

$files = 'foo.txt','c:\temp\bar.txt','baz\baz.txt'
Remove-Item $files
Run Code Online (Sandbox Code Playgroud)

然后基于不同文件夹中的所有文件:

$folders = 'C:\temp','C:\users\joe\foo'
Get-ChildItem $folders -r | Where {!$_.PSIsContainer} | Remove-Item -WhatIf
Run Code Online (Sandbox Code Playgroud)

删除-WhatIf要做的实际删除.

如果要删除具有特定名称的文件,可以使用-Filter参数on Get-ChildItem.这将是表现最佳的方法:

$folders = 'C:\temp','C:\users\joe\foo'
Get-ChildItem $folders -r -filter foo.bak | Remove-Item -WhatIf
Run Code Online (Sandbox Code Playgroud)

如果名称需要更复杂的匹配,那么您可以在Where scriptblock中使用正则表达式,例如:

$folders = 'C:\temp','C:\users\joe\foo'
Get-ChildItem $folders -r | Where {$_.Name -match 'f\d+.bak$'} | 
                            Remove-Item -WhatIf
Run Code Online (Sandbox Code Playgroud)