powershell - 将同一目录从多个父目录复制到多个目标
问题描述
我想要做的是将多个父目录中存在的目录复制到目标,同时保留 \Parent\child 结构。源目录是版本化的软件版本,我想要的目录包含每个版本的修补程序。
源目录结构
\Releases\app_26.6.1.123\Patch\
\Releases\app_26.6.2.456\Patch\
etc etc
最后两个数字发生变化,但格式始终为 #.## 或 #.###,第一个 # 从 1 递增到 7。
我想做的是这样的:
copy \Release\app_26.6.[1-7].*\Patch\ to C:\Temp\eureka\app_26.6.[1-7].*\Patch\
我认为我将不得不使用 for 循环迭代,但是我的大脑正在受伤,试图在 powershell 中想出一种方法来做到这一点;这就是我在这里的原因。
这篇文章非常接近我想要做的,但是错误的平台: 将多个目录复制到多个目标目录中
谢谢
解决方案
我假设每个源补丁都有多个目的地?尝试这样的事情,在名称中通配符版本号:
Foreach ($src in (Get-Item "\Releases\app_*\Patch")) {
# Split off the last version number on the parent folder
$baseVersion = ($src.parent.name -split '\.')[0..2] -join '.'
# Get each destination folder using * wildcard
$destinations = Get-Item "c:/Temp/eureka/$baseVersion*/"
# Copy folders
Foreach ($dst in $destinations) {
Copy-Item $src.FullName $dst.FullName -Recurse
}
}
这应该创建以下源和目标结构:
# src
\Releases\app_26.6.1.123\Patch\1
\Releases\app_26.6.2.456\Patch\2
# dst
c:/Temp/eureka/app_26.6.1.100/Patch/1
c:/Temp/eureka/app_26.6.1.200/Patch/1
c:/Temp/eureka/app_26.6.2.300/Patch/2
c:/Temp/eureka/app_26.6.2.400/Patch/2
如果您不想要通配符但特别需要[1-7]
,则可以使用正则表达式:
$destinations = Get-Item "c:/Temp/eureka/*/" |
Where Name -match "$baseversion.[1-7]"
推荐阅读
- microsoft-graph-api - 尝试获取 singleValueExtendedProperties 时收到 400 和 500
- intellij-idea - Intellij IDEA 控制台中的运行时
- typescript - Typescript:这种用于键入函数的键入方法是什么?
- python - tkinter 框架没有几何图形 python tkinter
- django - Django QuerySets - 相关模型
- git - git合并重复提交
- c++ - 如何使用 c++ 中的构造函数初始化 unique_ptrs 的 2d 向量?
- sql - 如何在 Visual Basic 中制作数据透视表
- python - 如何在使用 openpyxl 时根据我在 Excel 工作表中迭代的行号创建动态变量?
- python - 如何制作 2D 3x3 数组的列表并使用 numpy save 保存 ndarray?