删除CSV文件中列出的文件

时间:2015-08-13 03:23:50

标签: powershell csv

我目前正在尝试运行PowerShell脚本来删除CSV中列出的一堆文件。删除驱动器根目录中的文件没有问题。当文件在文件夹中时,脚本只会出现问题。我尝试将" "添加到文件路径和名称中,但仍然无法正常工作。我使用的是PowerShell 2.0版。

CSV示例(remove.csv):

D:\Data\HomeDrives\stusers\user\My Documents\SC\setup.exe

PowerShell脚本:

$files = Get-Content "D:remove.csv"

foreach ($file in $files) {
    Remove-Item -Path $file -Force
}

Write-Host -foregroundcolor yellow "Delete action complete"

我收到以下错误:

Remove-Item : Cannot find path ' D:\Data\HomeDrives\stusers\user\My Documents\SC\setup.exe'
does not exist.
+ FullyQualifiedErrorId: PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand.

我已经检查过,文件确实存在。

1 个答案:

答案 0 :(得分:2)

您从输入文件中读取的路径具有前导空格。在删除文件之前修复输入数据或Trim()字符串(如问题评论中所述):

foreach ($file in $files) {
    Remove-Item -Path $file.Trim() -Force
}

您还可以使用ForEach-Object循环而不是foreach循环来简化代码:

Get-Content 'D:\remove.csv' | ForEach-Object { $_.Trim() } | Remove-Item -Force