проверьте, совпадает ли часть имени файла из folderone во второй папке, и выведите оба, если совпадение найдено - PullRequest
0 голосов
/ 10 апреля 2019

проверить, совпадает ли часть имени файла в папке с частью имени файла в папке два.
Форекс: april_logs-0410.txt в папке, совпадает с april_logs-0310.txt в папке два.
Мне нужно увидеть совпадающее полное имя файла в папке: два .. ex april_logs-0310.txt должен быть напечатан на выходе.

$folderone = Get-ChildItem -Recurse folderone
foreach($file in $folderone)
{
$fileNon = $file.Name -split'(?=-\d)' #splits the filename with -0410
$newfile = $fileNon[0] #this has april_logs
If (test-path "d:\foldertwo\$newfile" -pathtype leaf)) {
write-host "$newfile is in foldertwo"
}

1 Ответ

0 голосов
/ 10 апреля 2019

С данным деревом:

> tree a:\ /f
A:\
├───Folder1
│       april_logs-0410.txt
│       may_logs-0510.txt
│
└───Folder2
        april_logs-0310.txt

эта одна строка

gci Folder1\*-[0-9]*|? Name -match '^(.*)-\d'|%{(gci Folder2\$($matches[1])*).FullName}

дает:

A:\Folder2\april_logs-0310.txt

Этот более многословный и немного другой скрипт:

## Q:\Test\2019\04\10\SO_55605777.ps1
$FolderOne = 'A:\Folder1'
$FolderTwo = 'A:\Folder2'
foreach($File in (
    Get-ChildItem $FolderOne\*-[0-9]* |
    Where-Object Name -match '^(.*)-\d'|
    Select-Object FullName,@{n='Pattern';e={$Matches[1]}} )){
    if($Found = (Get-ChildItem $FolderTwo\$($File.Pattern)*).FullName){
        "{0} is matched by:" -f $File.FullName
         $Found
    }
}

выход:

> Q:\Test\2019\04\10\SO_55605777.ps1
A:\Folder1\april_logs-0410.txt is matched by:
A:\Folder2\april_logs-0310.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...