首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell比较目录并复制到另一个目录

PowerShell比较目录并复制到另一个目录
EN

Stack Overflow用户
提问于 2013-09-20 04:56:46
回答 2查看 1.8K关注 0票数 1

我的结构如下:

代码语言:javascript
复制
C:\one\web.config
C:\two\web_rollback.config
C:\three\    ( this is empty , it is where I want to copy to

在我的Powershell file.ps1中,我有以下代码:

代码语言:javascript
复制
$Folder1 = Get-childitem  "C:\one\"
$Folder2 = Get-childitem  "C:\two\"
$Folder3 = Get-childItem  "C:\three\"

Compare-Object $Folder1 $Folder2 -Property Name, Length | Where-Object {$_.SideIndicator -eq "=>"} | ForEach-Object {
    Copy-Item "$Folder1\$($_.name)" -Destination $Folder3 -Force}

但是,为什么会出现这个错误呢?

代码语言:javascript
复制
PS C:\windows\system32> C:\pscripts\compareobject.ps1
Copy-Item : Cannot find path 'C:\windows\system32\Web.config\Web_Rollback.config' because it does not exist.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-20 10:30:00

你选择了误导变量的名字,然后掉进了你自己挖的洞里。

代码语言:javascript
复制
$Folder1 = Get-childitem  "C:\one\"
$Folder2 = Get-childitem  "C:\two\"
$Folder3 = Get-childItem  "C:\three\"

这些说明将用给定文件夹的子项填充变量。

代码语言:javascript
复制
Copy-Item "$Folder1\$($_.name)" -Destination $Folder3 -Force

然而,该指令使用$Folder1$Folder3,就好像它们包含文件夹路径(但它们不包含)。

最重要的是,您的代码将失败,因为Compare-Object -Property Name, Length将始终生成web_rollback.config作为侧指示符=>的结果(因为C:\oneC:\two中的项的名称是不同的,即使文件大小不相同),而且C:\one中不存在具有该名称的文件。

方法的另一个缺陷是,您依赖于大小的不同来检测两个文件之间的更改。例如,如果某个值从0更改为1,则此检查将失败。

将代码更改为如下内容:

代码语言:javascript
复制
$config   = "C:\one\web.config"
$rollback = "C:\two\web_rollback.config"
$target   = Join-Path "C:\three" (Get-Item $config).Name

if ([IO.File]::ReadAllText($config) -ne [IO.File]::ReadAllText($rollback)) {
  Copy-Item $rollback -Destination $target -Force
}
票数 3
EN

Stack Overflow用户

发布于 2013-09-20 07:10:00

如果删除文件夹路径中的尾斜杠会发生什么?

代码语言:javascript
复制
$Folder1 = Get-childitem  "C:\one"
$Folder2 = Get-childitem  "C:\two"
$Folder3 = Get-childItem  "C:\three"

因为如果扩展变量$Folder1,就会得到

代码语言:javascript
复制
Copy-Item "$Folder1\$($_.name)"

Copy-Item "C:\One\\$($_.name)"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18909070

复制
相关文章

相似问题

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