PowerShell遍历数组,如果匹配copy-item

时间:2015-05-12 12:38:36

标签: powershell-v3.0

我希望能够查看数组,如果源目录包含文本文件所需文件的副本,则将该文件的副本放入另一个文件夹。

$Source=get-content .\2cHotfix.txt
$Available=gci

foreach($item in $Source){
  $_ -match $Available;`
  Copy-Item $item .\InUse\*.*
}
  

示例可用输出

gci -Include *.cab -Recurse| select -First 5  -ExpandProperty Name
  

windows8-rt-kb2727528-x64_92649202b7e2269d8389cb4c196e97bb71ef244c.cab   windows8-rt-kb2729462-x64_98376c883f61da7ff61d61bed1ab2770c8cdde2c.cab   windows8-rt-kb2736693-x64_461a3322139f134f066bc66c209714f42ad7857f.cab   windows8-rt-kb2737084-x64_67da24ea41c8a42f75d09656713697f80f263a14.cab   windows8-rt-kb2742614-x64_791ea59ee9e2500a6d60d011544245c3af7de1e7.cab

     

示例源文本文件输入。

     

hotfixid

     

KB2756872
  KB2758246
  KB2761094

1 个答案:

答案 0 :(得分:1)

在看到您的文件格式和预期的文件名后,我已经更新了。

第一行跳过2cHotfix.txt的前两行,因为我们不想尝试匹配“Hotfixid”或空行。然后我们检查当前目录中是否有任何文件包含我们当前正在检查的来源(格式为KB #######)格式的行。如果找到文件,我们将其复制到./InUse文件夹。

$Source=get-content .\2cHotfix.txt | select -Skip 2

foreach($item in $Source){
    $file = gci -filter $("*{0}*" -f $item)
    if ($file -ne $null)
    {
        Copy-Item $file .\InUse
    }
}