【问题标题】:Comparing Folder names from different directories and outputting both results in csv - PowerShell比较来自不同目录的文件夹名称并将两个结果输出到 csv - PowerShell
【发布时间】:2020-03-25 23:28:06
【问题描述】:

我有两个目录“A”和“B”。 “A”中有文件夹 abc,def,ghi,jkl,“B”中有 ghi,jkl,mno。我需要在 Csv 中输出如下:-

我是 PowerShell 的新手,所以在 Google 上搜索了有关文件夹比较的信息并在下面写了脚本

$SourceFolder = "A"
$ArchiveFolder = "B"

$Folder1 = Get-childitem $SourceFolder
$Folder2 = Get-childitem $ArchiveFolder

Compare-Object $Folder1 $Folder2 -PassThru

但上面的代码只是给出了差异,而不是上面需要的格式。

【问题讨论】:

  • 到目前为止你尝试过什么? StackOverflow 不是代码编写服务,因此要获得帮助,请编辑您的问题以包含您遇到问题的具体步骤。
  • 只需要像上面那样在文件夹级别进行比较,例如 abc,def 是文件夹,只需要比较文件夹名称.. 没有大小限制.. 两者的文件夹名称应该相同目录,即使它们不是,那么它们也应该出现在结果中
  • 如果filename 存在于两个目录中但例如Size 是不同的(我认为在 Matching 列中显示两个文件但 N
  • 我们只需要在文件夹级别进行比较,如果文件夹名称相同,则将目录文件夹名称和 Y 显示为匹配.. 否则 N.. 并且比较应该只在名称上.. 没有大小

标签: powershell


【解决方案1】:

如果我理解这个问题,这可能是这样做的一种方式:

$SourceFolder  = "X:\A"
$ArchiveFolder = "X:\B"

$Folder1 = Get-ChildItem -Path $SourceFolder -Directory
$Folder2 = Get-ChildItem -Path $ArchiveFolder -Directory

$result = Compare-Object -ReferenceObject $Folder1 -DifferenceObject $Folder2 -Property Name -IncludeEqual |
            Sort-Object 'SideIndicator' | ForEach-Object {
                $folder = $_.Name
                switch ($_.SideIndicator) {
                    '<=' { $a = $folder; $b = $null;   $m = 'N' }
                    '==' { $a = $folder; $b = $folder; $m = 'Y' }
                    '=>' { $a = $null;   $b = $folder; $m = 'N' }
                }
                [PsCustomObject]@{'A'= $a ; 'B' = $b; 'Matching' = $m }
            }

#output on screen
$result

# output to CSV file
$result | Export-Csv -Path 'X:\TheOutput.csv' -NoTypeInformation

屏幕输出:

A B 匹配 - - -------- ABC N 定义 N 呸呸呸 jkl jkl Y mno N

【讨论】:

  • 谢谢!!这就像一个魅力.. 还有一件事我在 csv 中得到了未排序的记录.. 我试图这样做 $result |Sort-Object | Export-Csv -Path .. 但它没有帮助
  • @Himsy 结果是按SideIndicator排序的,所以首先是A下的所有文件夹,然后是B。也许您需要先对文件夹进行排序”:$Folder1 = Get-ChildItem -Path $SourceFolder -Directory | Sort-Object Name。$Folder2 也是如此。您的意思是这样吗?
  • 谢谢.. 我从 SideIndicator 中删除了排序并添加到两个文件夹中,它工作正常。
  • @Himsy 很高兴听到您按照您想要的方式修复了排序。干得好!
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多