PowerShell 迭代文件内容匹配目录中的文件名递归

PowerShell Iterate file contents matching filenames recursively in directory

我有一个这样组织的文件名列表:(search.txt)

2KJ34DS
JSD92NS
1JNKD8A
KO1N231
ASJDOA9

我有一个这样组织的目录:\\logs\

20161201
  .\
  K2J3N4K.xml
  SDJNFK2.wav
  ASDN1JE.html
20161202
20161203
20161204

目录中带日期的文件夹的内容是我需要根据 search.txt 文件中提供的列表匹配的文件名。

我需要一个 powershell 脚本,它可以遍历日期文件夹并将找到的匹配文件复制到目标“\\logs\matches\”。它应该匹配任何文件扩展名。如果我可以指定 "start date" 和 "end date" 并且它只在开始日期和停止日期内的日期文件夹之间迭代,那将是一个额外的好处。

我不知道从哪里开始...有人可以帮忙吗?

你好试试这样的东西(最低 PowerShell v3)

$listfiles=get-content "c:\temp\search.txt"
$destination="c:\logs\matches"
$startdate=get-date -Year 2016 -Month 01 -Day 01 -Hour 0 -Minute 0 -Second 0
$enddate=get-date -Year 2017 -Month 06 -Day 24 -Hour 0 -Minute 0 -Second 0

Get-ChildItem -file -Recurse "c:\logs" | 
    where {$_.BaseName -in $listfiles -and $_.FullName -ne "$destination$($_.Name)" -and $_.LastWriteTime -ge $startdate -and $_.LastWriteTime -le $enddate} | 
        Copy-Item  -Destination $destination -Force