我正在尝试复制一堆目录。我有具有类似名称的文本文件,我需要将目录与这些文本文件相匹配,以确定要复制的目录。

这就是我所做的,我无法弄清楚如何解决它。我在兜圈子.

$destination = "..\..\$args\Images\"
$txtfiles = Get-ChildItem $destination -Include *.txt
$source = "..\..\..\Images\" | ?{ $_.PSIsContainer } | Where-Object { $_.Name -Like "*$txtfiles*" } | Copy-Item $destination

一个txt文件的例子: 1e03655b-0aac-48b2-82f3-75942084af7a.txt

和文件夹: name.1e03655b-0aac-48b2-82f3-75942084af7a

所以我需要找到与txt文件匹配的文件夹,并将该文件夹复制到txt文件目录。

谢谢

有帮助吗?

解决方案

你想展开这些文本文件的BaseName属性(以切断。txt部分),并有一个字符串数组,如:

1e03655b-0aac-48b2-82f3-75942084af7a
1e03655b-0aac-48b2-82f3-75942084af7b
1e03655b-0aac-48b2-82f3-75942084af8g
1e03655b-0aac-48b2-82f3-75942084afba

那么你的 $source = 行需要拉一个目录列表,而不仅仅是管道一个字符串,然后我建议将目录名称与正则表达式匹配,并检查是否匹配 -in $txtfiles.

$destination = "..\..\$args\Images\"
$txtfiles = Get-ChildItem $destination -Filter *.txt | Select -ExpandProperty BaseName
$source = "..\..\..\Images\"
GCI $source -Directory | ?{ $_.Name -match "(\w{8}-\w{4}-\w{4}-\w{4}-\w{12})$" } | %{If($Matches[1] -in $txtfiles){Copy-Item $_.FullName $destination}}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top