powershell - Powershell 复制匹配项
问题描述
我想制作一个脚本,其中有一个带有编号文件夹的备份文件夹,并且有编号的 zip 文件,对于这些 zip 文件,找到编号的文件夹并将其复制到那里并展开它。
$R = "136" ; "287"
gci "\\rossfsscan\scanning\ejbackup\" | where-object {$_.name -match "$R"}
但我不知道如何将文件移动到匹配的目录。
解决方案
不要使用分号 ( ;
),因为它表示Powershell 中的语句终止。所以,如果你只运行变量$R
,你会得到的唯一输出是“136”。您当前仅将字符串“136”保存$R
到主机并向主机显示“287”。而是使用管道符号 ( |
) 作为匹配的正则表达式分隔符。
$R = "136|287"
gci "\\rossfsscan\scanning\ejbackup\" -Recurse | Where-Object {$_.Name -match $R}
现在,在过滤时,使用管道是可以的,但由于其工作方式的性质,它往往会变慢。最佳做法是尽可能向左过滤:
gci "\\rossfsscan\scanning\ejbackup\" -Recurse -Include '*136*','*287*'
要复制过滤的项目,请将其通过管道传输到Copy-Item
.
gci "\\rossfsscan\scanning\ejbackup\" -Recurse -Include '*136*','*287*' | Copy-Item -Destination "C:\My\destination\path"
推荐阅读
- laravel - Laravel 7 | 我如何克隆 eloquent 对象并在表中添加具有所有关系的条目
- python - 重用补丁语句
- node.js - Lambda,更新 Cognito 自定义用户属性不会做任何事情
- liferay - 在 Liferay 上发布时出错,没有类 StagedModelDataHandlerRegistryUtil
- javascript - 将多个连续字符替换为其最后一次出现
- java - 如何根据枚举值验证休息请求中的字符串字段?
- google-cloud-firestore - Firestore 数据库是否适合这种时间序列数据,还是我应该实现其他东西?
- c - 用于 qsort 结构的多种类型字段的自定义比较功能
- mysql - 通过忽略列中的 0 值来计算平均值
- rest - ActiveMQ Artemis 上的 REST 接口