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
我有一个这样组织的文件名列表:(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