如何使用 Get-ChildItem select 文件夹 A 中不在文件夹 B 中的文件

How to select files from folder A that are not in Folder B using Get-ChildItem

我的问题是,如果文件夹 A 中的文件具有 不同的 文件扩展名,那么我如何打印文件夹 B 中不存在的文件名。

文件夹 A 中的文件具有 .xlsx 文件扩展名,文件夹 B 中的文件具有 .txt 文件扩展名。

这是一个可视化表示:

文件夹 A 有 3 个 .xlsx 文件。

文件夹 B 有 2 个 .txt 文件。

我想要的输出是打印 GHI.xlsx 文件名,因为它不存在于文件夹 B 中。

这是我目前的工作:

#Get list of files
$Files = Get-ChildItem '\C:\My Documents\Folder A\*.xlsm' `
    -Exclude 'C:\My Documents\Folder B\*.txt'

foreach($File in $Files) {
    $Filename = $File.BaseName
    echo  $Filename
}

您可以使用 Where-Object cmdlet 过滤 BaseName 属性:

$folderA = Get-ChildItem 'C:\My Documents\Folder A' -File
$folderB = Get-ChildItem 'C:\My Documents\Folder B' -File | 
   select -ExpandProperty BaseName)

$folderA | Where-Object BaseName -NotIn $folderB | 
    select -ExpandProperty Name