2017-01-03 13 views
-1

У меня есть список имен файлов, организованных таким образом: (search.txt)
содержимого PowerShell итерация файлы, соответствующие имена файлов рекурсивно в каталоге

2KJ34DS 
JSD92NS 
1JNKD8A 
KO1N231 
ASJDOA9 

Я каталог организован таким образом: \\ Logs \

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

содержимое датированных папок в каталоге являются именами файлов, мне нужно, чтобы соответствовать в соответствии с перечнем, представленным в файл search.txt.

Мне нужен сценарий powershell, который может выполнять итерацию по датированным папкам и скопировать файл, соответствующий найденному в пункт назначения \\ logs \ matches \. Он должен соответствовать любому расширению файла. Это было бы дополнительным бонусом, если бы я мог указать «дату начала» и «дату окончания», и он перебирает только промежуточные папки в дате начала и окончания.

Я понятия не имею, с чего начать ... может ли кто-нибудь помочь?

ответ

1

привет попробовать что-то вроде этого (минимум 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 
+1

Почему v5? Вы не используете ни одну функцию, которая недоступна в v3? –

+0

Вы правы; я ошибочно считал, что опция «-file» была активной с v5, потому что мало кто использует ее на этом сайте, я плохо. Спасибо за информацию, я изменяю свою публикацию :) – Esperento57