1

Ситуация:

В Powershell я использую:

$folders = dir -s  C:\Users\Name\Downloads\*.ttf | Select Directory
foreach ($folder in $folders)
{
    echo $folder
}

Для отображения папок, содержимое которых содержит определенные расширения файлов (в данном случае файлы .ttf).

Поскольку в папках содержится более одного файла типа .ttf, дубликаты появляются в окончательном списке. Это бесполезно для меня, потому что я хотел бы переместить перечисленные каталоги куда-нибудь еще.

Мой вопрос:

Как я могу удалить эти дубликаты из отраженного списка?

2 ответа2

1

Хорошо, я думаю, что разобрался.

Я использовал переключатель -Unique для Select чтобы отфильтровать повторяющиеся результаты.

Предоставление окончательного кода:

$folders = dir -s C:\Users\Name\Downloads\*.ttf | Select Directory -Unique
foreach ($folder in $folders)
{
    echo $folder
}

Простое решение, но я не использовал PowerShell для сценариев раньше, поэтому я не знал об этой особенности :)

0

Вы можете использовать Contains для проверки при загрузке каждого элемента в список или NotContains.

Вы можете попробовать это, чтобы получить представление о содержании:

$room = @("desk","Lamp","chair","pens","Paper")
$room -Contains "Lamp"
$room -notContains "Whale Bladder"

Простое (вне головы и не проверенное) приближение того, что вы хотите, будет выглядеть примерно так:

$FoundFiles = @()
$FolderList | Foreach-Object {
   Get-ChildItems $_ | foreach-Object {if ($FoundFiles -NotContains  $_.Name){
    $FoundFiles += $_
      }
    }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .