PowerShell:重复文件,排除文件夹,如果名称/大小相同,则删除
我对powershell非常陌生,我在谷歌上搜索了很多,并将结果合并到了这里,但首先,我的文件夹结构如下:PowerShell:重复文件,排除文件夹,如果名称/大小相同,则删除,powershell,recursion,path,duplicates,Powershell,Recursion,Path,Duplicates,我对powershell非常陌生,我在谷歌上搜索了很多,并将结果合并到了这里,但首先,我的文件夹结构如下: 测试neu _贝维特 1.txt 2.txt 一, 1.txt 2.txt 二, 1.txt 3.txt 4.txt 我的目标是查找存储在\u bewertet中的所有文件,如果这些文件也存在于除自身以外的任何其他子文件夹中(关于文件名和大小),则应将其删除。因此,为了清楚起见,文件应该保存在\u bewertet中,而不是其他地方 $ignore = @("*_be
- 测试neu
- _贝维特
- 1.txt
- 2.txt
- 一,
- 1.txt
- 2.txt
- 二,
- 1.txt
- 3.txt
- 4.txt
- _贝维特
$ignore = @("*_bewertet*");
$one = Get-ChildItem -Recurse -path C:\Users\name\Desktop\test-neu\_bewertet
$two = Get-ChildItem -Recurse -path C:\Users\name\Desktop\test-neu -Exclude $ignore | ? { $_.PSIsContainer }
$matches = (Compare-Object -ReferenceObject $one -DifferenceObject $two -Property Name,Length -ExcludeDifferent -IncludeEqual)
foreach ($file in $matches)
{
Remove-Item C:\Users\name\Desktop\test-neu\$($file.Name)
}
到目前为止,如果我运行我的脚本,它实际上什么都没有做…,我的猜测是,删除项目部分需要调整。例如,路径只指向C:\Users\name\Desktop\test neu\1.txt,因此缺少相应的子文件夹
如果你们能帮我,那对我来说意义重大。欢迎提出任何建议。祝你今天愉快。:) 为了实现这个目标,这是我能想到的最简单的逻辑
$keep = Dir -Path t:\bewertet -Recurse
$allFiles = Dir -Path t:\ -Recurse -Include *.txt | Where Directory -NotLike "t:\bewertet*"
$allFiles | Where Name -in $keep.Name | Remove-Item
$Keep
定义bewertet文件夹中的文件列表。$allFiles
以递归方式定义所有文件的列表,仅指定.txt文件,其中目录不是t:\bewertet
最后,我们过滤$allFiles
,在$keep
中查找名称与文件匹配的文件,然后删除其中的每个文件
更好
OP回来说我们忘了检查它的大小是否相同代码>,所以我是在圣诞节的精神,我写了这个懒惰的比较
$keep = gci t:\bewertet -Recurse
$allFiles = dir -Path t:\ -Recurse -Include *.txt | Where Directory -NotLike "t:\bewertet*"
$matches = $allFiles | ? Name -in $keep.Name
ForEach ($match in $matches){
$source = $keep | ? Name -eq $match.Name
$Samefile = ($source.Length -eq $match.length)
"Does file size match? [$Samefile]"
if ($Samefile){
"deleting..."
Remove-item $match
}
}
您应该首先查看Compare Object
的结果。如果为空,则不会发生循环。如果有结果,您应该在比较对象之后使用Select-Expand InputObject
再次检索文件对象,这就像一个符咒。我知道可能有一个简短的解决办法。我刚刚在我的设置中测试了它,现在我需要更多的时间来完全理解它。谢谢你,先生:)很乐意帮忙。我的只是看起来有点复杂,因为我正在为Dir
指定所有参数名,而不是使用位置参数等。没有考虑文件大小。该死,是的,我刚刚意识到缺少文件大小参数…如何考虑这一点?非常感谢,我感谢你的圣诞精神;)