删除非标准文件名的文件列表

删除非标准文件名的文件列表

我最近不得不从坏的硬盘中拯救文件,现在正在清理这些乱七八糟的东西。目前,我正在使用重复清理程序删除任何在备份中有重复项的恢复文件。我正在比较内容,而不是文件名,因为文件名大多是由救援程序生成的。

不幸的是,我需要删除的一些文件的文件名包含各种字符,例如 %、@、; 和其他导致问题的内容。我的 dupechecker 在尝试删除文件时卡住了,几个小时都没有找到要删除的项目。

于是我导出了要删除的文件列表,然后使用 Powershell 删除它们。它删除了一些文件,但当遇到文件名中的破坏性字符时,它很快就失败了。

我的 Powershell 命令:

Get-Content d:\dupelist3.txt | Remove-Item

文件列表的摘录(添加了 CR 以提高可读性):

G:\HE12 #2 恢复 EaseUS\恢复的数据 09-06 09_23_00\1 HE12 2 (F) NTFS\其他丢失文件---[100%]--[所有文件-CRC-OK]--[16 个文件]-

“G:\HE12 #2 恢复 EaseUS\恢复的数据 09-06 09_23_00\1 HE12 2 (F) NTFS\其他丢失的文件\FTP_SERVER.LOG;6”

“G:\HE12 #2 恢复 EaseUS\恢复的数据 09-06 09_23_00\1 HE12 2 (F) NTFS\其他丢失的文件\GOPHER.$5516417292;1”

“G:\HE12 #2 恢复 EaseUS\恢复的数据 09-06 09_23_00\1 HE12 2 (F) NTFS\其他丢失的文件\GOPHERRC.;1”

G:\HE12 #2 恢复 EaseUS\恢复的数据 09-06 09_23_00\1 HE12 2 (F) NTFS\其他丢失的文件\listener[1].htm

“G:\HE12 #2 恢复 EaseUS\恢复的数据 09-06 09_23_00\1 HE12 2 (F) NTFS\其他丢失的文件\TELNET.LOG;1”

文件列表最初是一个 csv 文件,我使用 Excel 处理它,只从我的 dupechecker 导出中提取路径和文件名。因此,在从 Excel 导出(制表符分隔)文本文件时,一些文件引用被封装在双引号中。我注意到,本文中上述列表中的第一个项目表示错误,因为在“其他丢失的文件”之后和后面三个破折号之前应该有一个反斜杠。我想这在某种程度上说明了这个问题 :)

所以我的问题是:鉴于手头的复杂情况,我该如何删除列表中的所有文件?手动操作行不通,因为列表中有 100k+ 个文件,而且我有多个列表。

只要能够完成工作,我愿意使用其他工具......

此致,

施泰纳

答案1

你可以尝试

Get-Content d:\dupelist3.txt | % {Remove-Item -LiteralPath $_ -WhatIf}

删除 -WhatIf 才能实际执行

除去项目

-LiteralPath 指定一个或多个位置的路径。LiteralPath 的值按输入的方式使用。没有字符被解释为通配符。如果路径包含转义字符,请将其括在单引号中。单引号告诉 PowerShell 不要将任何字符解释为转义序列

答案2

如果您可以使用通配符来攻击它,您可能会发现这很有用。用一些非常奇怪的字符进行了测试,似乎都有效。我添加了 Set-Location 以避免在错误的文件夹中运行。准备好黄金时段时删除 -WhatIf。

Set-Location 'D:\Trashcan' $junk = '*.@@@', '*;*', 'trash[0-9].log' $files = get-childitem * -include $junk -recurse $files | Remove-Item -WhatIf $files.count

我使用类似的脚本来清理一组经常收集我不想要的文件的文件夹。

相关内容