Фильтрация расширений файлов с помощью Powershell - PullRequest
0 голосов
/ 22 марта 2019

Мне нравится искать некоторые старые файлы с предопределенными расширениями.(например, .doc, .xls, .txt и т. д.) в определенной папке.Я помещаю расширения в переменную:

$wildcards = @(".txt",".doc",".xls")

Когда я помещаю новое значение в эту переменную, оно должно изменить другую переменную.($ collection)

Вот мой код:

$folder = Get-ChildItem C:\test\test1\
$date = (Get-Date).Add(-1)
$wildcards = @(".txt",".doc",".xls")


function Get-WildCards { 

$counter = 0;
$counterEnd = $wildcards.Count
$collection = New-Object System.Collections.ArrayList 
$filter = "$" + "_.Extension" + " -like $" + "wildcards[" + $counter + "]}"
$or = " -or "

    for ($counter = 0; $counter -lt $counterEnd; $counter++) {

        $filter = "$" + "_.Extension" + " -like $" + "wildcards[" + $counter + "]}"
        $collection += $filter + $or
    }

$collection = [String]::Join('', $collection)
$collection = $collection.ToString()
$collection = $collection.TrimEnd($or)
} 

Get-WildCards

$folderPath = $folder.FullName

$files = Get-ChildItem -Path $folderPath -File:$true |
 Where-Object {$collection} 

$files

Если я выполню этот код, условие Where-Object не будет работать таким образом.Это не будет фильтровать расширения.Как мне добиться, чтобы это работало?Любая помощь приветствуется.

1 Ответ

1 голос
/ 22 марта 2019

Вы, кажется, усложняете вещи. Попробуйте это -

$folder = Get-ChildItem C:\test\test1\
$wildcards = @(".txt",".doc",".xls")
$files = Get-ChildItem -Path $folderPath | where {$_.extension -in $wildcards}
$files
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...