嗨,
在PowerShell中,我想比较两个文件夹。 [文件夹1]和[文件夹2],以及[文件夹1]中缺少的每个文件夹,都在[文件夹2]中创建。我该怎么做?
例如:
> tree .
├───Folder1
│ ├───A0
│ ├───A1
│ ├───B0
│ └───B1
└───Folder2
├───A0
├───A1
└───B1
这是到目前为止我尝试过的事情:
我已经分配了源文件夹和目标文件夹,并按如下所示检索了每个文件夹的列表:
$Source = "C:\Temp\Folder1"
$Destination = "C:\Temp\Folder2"
$SrcObj = Get-ChildItem $Source
$DestObj = Get-ChildItem $Destination
然后我比较了两个文件夹,例如:
Compare-Object -ReferenceObject $SrcObj -DifferenceObject $DestObj
结果如下:
InputObject SideIndicator
----------- -------------
B1 <=
鉴于上面的输出,我以为我可以将比较对象命令的输出直接通过管道传递到New-Item cmdlet,但这似乎对我不起作用。
我如何实现我的目标-即创建目标目录中缺少的“ B1”文件夹?
答案 0 :(得分:2)
遵循您的方法,仅朝目的地的方向 您可以这样做:
$Source = "C:\Temp\Folder1"
$Destination = "C:\Temp\Folder2"
$SrcObj = Get-ChildItem $Source -Dir
$DestObj = Get-ChildItem $Destination -Dir
Compare-Object -Ref $SrcObj -Diff $DestObj -Property Name |
Where-Object SideIndicator -eq '<=' |
New-Item -ItemType Directory -Path {Join-Path $Destination $_.Name} -WhatIf
如果输出看起来正常,请删除结尾的-WhatIf
答案 1 :(得分:1)
尝试
$DirSource="C:\temp\Folder1"
$DirDestination="C:\temp\Folder2"
Get-ChildItem $DirSource -directory -Recurse | %{New-Item $_.FullName.Replace($DirSource, $DirDestination) -ItemType Directory -Force}