首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PowerShell中比较两个文件夹并创建缺少的子文件夹

如何在PowerShell中比较两个文件夹并创建缺少的子文件夹
EN

Stack Overflow用户
提问于 2019-03-22 02:23:35
回答 2查看 206关注 0票数 1

大家好,,

在PowerShell中,我想比较两个文件夹: Folder1和Folder2,对于Folder1中缺少的每个文件夹,在Folder2中创建它。我该怎么做呢?

例如:

代码语言:javascript
复制
> tree .
├───Folder1
│   ├───A0
│   ├───A1
│   ├───B0
│   └───B1
└───Folder2
    ├───A0
    ├───A1
    └───B1

到目前为止,我尝试了以下内容:

我已经分配了源文件夹和目标文件夹,并检索了每个文件夹的列表,如下所示:

代码语言:javascript
复制
$Source = "C:\Temp\Folder1"
$Destination = "C:\Temp\Folder2"
$SrcObj = Get-ChildItem $Source
$DestObj = Get-ChildItem $Destination

然后我比较了这两个文件夹,如下所示:

代码语言:javascript
复制
Compare-Object -ReferenceObject $SrcObj -DifferenceObject $DestObj

这导致了以下输出:

代码语言:javascript
复制
InputObject  SideIndicator
-----------  -------------
B1           <=

考虑到上面的输出,我认为我可以通过管道将Compare-Object命令的输出直接传递给New-Item cmdlet,但这似乎对我不起作用。

如何实现我的目标--即创建目标目录中缺失的"B1“文件夹?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-22 03:29:00

跟随你的方法,并且只在你能做的方向上:

代码语言:javascript
复制
$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

票数 2
EN

Stack Overflow用户

发布于 2019-03-22 02:32:26

尝尝这个

代码语言:javascript
复制
$DirSource="C:\temp\Folder1"
$DirDestination="C:\temp\Folder2"

Get-ChildItem $DirSource -directory -Recurse | %{New-Item $_.FullName.Replace($DirSource, $DirDestination) -ItemType Directory -Force}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55286925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档