如何使用 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
我的问题是,如果文件夹 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