首页 > 解决方案 > 比较来自不同目录的文件夹名称并将两个结果输出到 csv - PowerShell

问题描述

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

在此处输入图像描述

我是 PowerShell 的新手,所以在谷歌上搜索了文件夹比较并写了下面的脚本

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

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

Compare-Object $Folder1 $Folder2 -PassThru

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

标签: powershell

解决方案


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

$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

屏幕输出:

AB匹配
- - --------
ABC N       
定义 N       
吉吉Y       
jkl jkl Y       
    mno N

推荐阅读