如何在PowerShell中复制匹配正则expression式的文件名?

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

“E:\工作stream程\ 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,这样所有匹配过滤器的文件将被发现,无论多深。 然后,您需要重新创建原始目录结构,因为您不能将文件复制到不存在的目录。 在创建新目录时, md上的-ea 0开关将确保忽略错误 – 下面的操作就是:

 $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 }