gpt4 book ai didi

regex - 如何在 powershell 中复制与正则表达式匹配的文件名?

转载 作者:可可西里 更新时间:2023-11-01 09:54:54 26 4
gpt4 key购买 nike

我是 Powershell 的新手。我需要将整个文件夹结构从源复制到目标,文件名与模式匹配。我正在做以下事情。但它只是复制根目录中的内容。例如

"E:\Workflow\mydirectory\file_3.30.xml"

不会被复制。

这是我的命令序列。

PS F:\Tools> $source="E:\Workflow"
PS F:\Tools> $destination="E:\3.30"
PS F:\Tools> $filter = [regex] "3.30.xml"
PS F:\Tools> $bin = Get-ChildItem -Path $source | Where-Object {$_.Name -match $filter}
PS F:\Tools> foreach ($item in $bin) {Copy-Item -Path $item.FullName -Destination $destination}
PS F:\Tools> foreach ($item in $bin) {Copy-Item -Path $item.FullName -Destination $destination -recurse}

最佳答案

你有几个问题。首先,将 -Recurse 开关添加到 Get-ChildItem,这样无论多深,都会找到所有匹配过滤器的文件。然后您需要重新创建原始目录结构,因为您无法将文件复制到不存在的目录中。 -ea 0 打开 md 将确保在创建新目录时忽略错误 - 以下内容将起到作用:

$source="E:\Workflow"
$destination="E:\3.30"
$filter = [regex] "3.30.xml"
$bin = Get-ChildItem -Recurse -Path $source | Where-Object {$_.Name -match $filter}
foreach ($item in $bin) {
$newDir = $item.DirectoryName.replace($source,$destination)
md $newDir -ea 0
Copy-Item -Path $item.FullName -Destination $newDir
}

关于regex - 如何在 powershell 中复制与正则表达式匹配的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22728174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com