Powershell получить дочерние маски имен файлов - PullRequest
0 голосов
/ 19 марта 2020

Я работаю над сценарием, который просматривает папки с несколькими .pdf-файлами в нем. Только когда имя файла соответствует одной из двух масок, Powershell должен продолжать выполнять определенные действия. В противном случае следует продолжить поиск следующего файла, соответствующего маске.

Я использовал:

Get-ChildItem $PATH -Filter "*TEXT-TXT-*" -Recurse -Force |Foreach-Object {

        write-host $_.Name

Но этот фильтр только жестко закодирован. Как использовать маску и предпочтительнее использовать две маски в качестве фильтра? Маски должны быть:

  • "## - ## - #### XXXX-XXX-XXXX-XX.PDF"
  • "## - ## - ## ## XXXX-XXX-XXX-XXXX-XX.PDF "

Где # - любые цифры, а X - любые нечисловые символы.

Надеюсь, что это возможно.

1 Ответ

1 голос
/ 19 марта 2020

для этого вы можете использовать регулярные выражения, добавить к ним несколько условий через "или", например, следующим образом

Get-ChildItem $PATH -Filter "*TEXT-TXT-*" -Recurse -Force|Where-Object {($_.name -match '\d{2}-\d{2}-\d{4} \w{4}-\w{3}-\w{3}-\w{4}-\w{2}.PDF') -or($_.name -match '\d{2}-\d{2}-\d{4} \w{4}-\w{3}-\w{4}-\w{2}.PDF')}

в этом выражении достаточно подставить имя файла, передаваемого по трубопроводу

...