使用 powershell 从父文件到子文件执行负号
Performing minus from parent to child files using powershell
我在 test1
文件夹中有三个文件:
我在 test2
文件夹中有三个文件:
这两个文件夹的共同点是 file2
。
我想减去 两个文件夹 之间的公共文件,只从 test1
文件夹中获取唯一文件。
我的预期输出是:
file1.txt
file3.txt
我尝试使用:
cls
$parent='D:\test1'
$child='D:\test2'
$final = [System.Collections.ArrayList]@()
$parentarrays=Get-ChildItem $parent
$childarrays=Get-ChildItem $child
foreach ($p1 in $parentarrays) {
foreach ($p2 in $childarrays){
if($p1 -notcontains $p2){
$final.add($p1)
}
}
}
Write-Host $final
但我得到输出:
file1.txt.txt file1.txt.txt file1.txt.txt file2.txt.txt file2.txt.txt file2.txt.txt file3.txt.txt file3.txt.txt file3.txt.txt
获取文件夹 2 中的文件名列表,并对文件夹 1 执行相同的操作。使用 Where-Object
子句过滤掉也在引用列表中的任何文件名:
$filesInFolder2 = (Get-ChildItem -Path 'D:\Test2' -File).Name
(Get-ChildItem -Path 'D:\Test1' -File).Name | Where-Object { $filesInFolder2 -notcontains $_ }
输出:
file1.txt
file3.txt
我在 test1
文件夹中有三个文件:
我在 test2
文件夹中有三个文件:
这两个文件夹的共同点是 file2
。
我想减去 两个文件夹 之间的公共文件,只从 test1
文件夹中获取唯一文件。
我的预期输出是:
file1.txt
file3.txt
我尝试使用:
cls
$parent='D:\test1'
$child='D:\test2'
$final = [System.Collections.ArrayList]@()
$parentarrays=Get-ChildItem $parent
$childarrays=Get-ChildItem $child
foreach ($p1 in $parentarrays) {
foreach ($p2 in $childarrays){
if($p1 -notcontains $p2){
$final.add($p1)
}
}
}
Write-Host $final
但我得到输出:
file1.txt.txt file1.txt.txt file1.txt.txt file2.txt.txt file2.txt.txt file2.txt.txt file3.txt.txt file3.txt.txt file3.txt.txt
获取文件夹 2 中的文件名列表,并对文件夹 1 执行相同的操作。使用 Where-Object
子句过滤掉也在引用列表中的任何文件名:
$filesInFolder2 = (Get-ChildItem -Path 'D:\Test2' -File).Name
(Get-ChildItem -Path 'D:\Test1' -File).Name | Where-Object { $filesInFolder2 -notcontains $_ }
输出:
file1.txt
file3.txt