仅从目录和子目录中获取重复文件
Getting only a repeating files from directory and subdirectories
我正在尝试编写用于查找非唯一文件的脚本。
该脚本应包含一个包含数据的 .csv 文件:文件名、上次写入时间和长度。然后我尝试基于那个制作另一个 .csv,它将只包含那些 Name+Length+LastWriteTime 组合不唯一的对象。
我尝试了以下使用 $csvfile
包含文件列表的脚本:
$csvdata = Import-Csv -Path $csvfile -Delimiter '|'
$csvdata |
Group-Object -Property Name, LastWriteTime, Length |
Where-Object -FilterScript { $_.Count -gt 1 } |
Select-Object -ExpandProperty Group -Unique |
Export-Csv $csvfile2 -Delimiter '|' -NoTypeInformation -Encoding Unicode
$csvfile
创建者:
{
Get-ChildItem -Path $mainFolderPath -Recurse -File |
Sort-Object $sortMode |
Select-Object Name, LastWriteTime, Length, Directory |
Export-Csv $csvfile -Delimiter '|' -NoTypeInformation -Encoding Unicode
}
(Get-Content $csvfile) |
ForEach-Object { $_ -replace '"' } |
Out-File $csvfile -Encoding Unicode
但不知何故在另一个 $csvfile2
中只有一个(第一个)非唯一记录。有谁知道如何改进它以便它可以列出所有非唯一记录?
您需要使用 -Property * -Unique
来获取唯一对象的列表。但是,您不能在这里同时使用 -Property
和 -ExpandProperty
,因为您希望后一个参数应用于输入对象($_
),而前一个参数应用于已经存在的对象扩展了这些输入对象的 属性 ($_.Group
)。
首先展开 属性 Group
,然后 select 唯一对象:
... |
Select-Object -ExpandProperty Group |
Select-Object -Property * -Unique |
...
我正在尝试编写用于查找非唯一文件的脚本。
该脚本应包含一个包含数据的 .csv 文件:文件名、上次写入时间和长度。然后我尝试基于那个制作另一个 .csv,它将只包含那些 Name+Length+LastWriteTime 组合不唯一的对象。
我尝试了以下使用 $csvfile
包含文件列表的脚本:
$csvdata = Import-Csv -Path $csvfile -Delimiter '|'
$csvdata |
Group-Object -Property Name, LastWriteTime, Length |
Where-Object -FilterScript { $_.Count -gt 1 } |
Select-Object -ExpandProperty Group -Unique |
Export-Csv $csvfile2 -Delimiter '|' -NoTypeInformation -Encoding Unicode
$csvfile
创建者:
{
Get-ChildItem -Path $mainFolderPath -Recurse -File |
Sort-Object $sortMode |
Select-Object Name, LastWriteTime, Length, Directory |
Export-Csv $csvfile -Delimiter '|' -NoTypeInformation -Encoding Unicode
}
(Get-Content $csvfile) |
ForEach-Object { $_ -replace '"' } |
Out-File $csvfile -Encoding Unicode
但不知何故在另一个 $csvfile2
中只有一个(第一个)非唯一记录。有谁知道如何改进它以便它可以列出所有非唯一记录?
您需要使用 -Property * -Unique
来获取唯一对象的列表。但是,您不能在这里同时使用 -Property
和 -ExpandProperty
,因为您希望后一个参数应用于输入对象($_
),而前一个参数应用于已经存在的对象扩展了这些输入对象的 属性 ($_.Group
)。
首先展开 属性 Group
,然后 select 唯一对象:
... |
Select-Object -ExpandProperty Group |
Select-Object -Property * -Unique |
...