Использование RegEx для сопоставления символов между двумя символами и копирования его в местоположение - PullRequest
1 голос
/ 09 апреля 2020

У меня есть каталог файлов, и моя цель - сопоставить почтовый индекс 5 git и скопировать его в другой набор указанных c папок.

Я знаю, что есть несколько способов сделать это, но иногда почтовый индекс отображается дважды в имени файла, поэтому я должен сопоставить почтовый индекс между ^ и% таким образом, чтобы все имя файла было таким: mjn22182aguygbc ^ 12350% ab c .pdf,

Еще одним предположением является то, что в месте назначения есть предустановленные папки с почтовым индексом, такие как: d: \ query \ 12350 .

Моя цель - переместить mjn22182aguygbc ^ 12350% ab c .pdd до d: \ запросы \ 12350 , если почтовый индекс существует в каком-то списке, который я могу прочитать, и если он не является частью почтовых индексов, файл остается в исходной папке.

Пока у меня есть следующее, но все файлы копируются в мою целевую папку root, а не в папки, которые я создал, например, 12350, и у меня возникли проблемы:

$dstpath = "D:\queries"   
$filterlist = @("12350","90182")
$fileList = Get-ChildItem -Path $srcpath -Force -Recurse

foreach ($currentfile in $fileList)
{
    foreach($zip in $filterLists)
    {
    $currentzip = $currentfile.Name -match '(?<=\^)[0-9]+(?=%)';
    if($currentzip -in $filterlist)
        {
        Move-Item -Path $($file.FullName) -Destination $dstpath
        }
    }
}

1 Ответ

0 голосов
/ 09 апреля 2020

Регулярное выражение верно, но все -match возвращает true.

'mjn22182aguygbc^12350%abc.pdd' -match '(?<=\^)[0-9]+(?=%)'
True

Совпадение будет содержаться в $ match.0 впоследствии.

$matches.0
12350

Вы переход к $ dstpath. Нет причины, по которой он будет go где-либо еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...