Я пытаюсь разработать скрипт для перемещения (некоторых) файлов, поступающих в каталог, и регистрации результатов. У меня есть право на копирование (я говорю правильно - это работает - но на самом деле это может быть безнадежно неправильно!), Но не ведение журнала.
Вот командная строка:
PCopy.ps1 - ECM несущей - направление IN - фильтр DEL, MAN
Первый параметр правильно определяет каталоги, второй выбирает подкаталог. Третий параметр - то, где это становится интересным, поскольку это массив.
Итак, я придумал пару вложенных циклов:
Foreach($item in $filter){
foreach($File in $filenames){
If($File -match $Item){
Write-Log "$File matches filter" -Path $LogFile
Copy-Item -Path $Sourcefile\$direction\$File -Destination $Destination
Это хорошо. Но поскольку он проходит через каждый фильтр, а файл, файл, который соответствует одному фильтру, не обязательно соответствует следующему.
Я пытаюсь скопировать нужные мне файлы и регистрировать только те файлы, которые мне не нужны.
Итак, скажем, 3 файла прибывают
Man.txt
Del.txt
Ava.txt
Я хочу, чтобы файл журнала показывал, что первые два соответствуют фильтру, и копировал их в место назначения, но третий не соответствует ни одному фильтру, поэтому регистрируется и не копируется.
Я знаю, что так, как я написал, так как каждый файл сравнивается с фильтром - я получу 2 скопированных сообщения и 4 несоответствующих сообщения - это не то, что я хочу.
Мне нужен более элегантный способ, что-то вроде:
Man.txt matches the filter MAN and was copied to $destination
Del.txt matches the filter DEL and was copied to $destination
Ava.txt did not match any filter so is being logged only
Единственное, о чем я подумал, это попытаться построить массив ответов и проверить (и удалить) дубликаты - но это не кажется очень интуитивным - может кто-нибудь помочь?
Я новичок в Powershell - так что прости меня, если я пропустил очевидное кровотечение!