Как использовать Test-Path, включая регулярные выражения - PullRequest
0 голосов
/ 14 декабря 2018

Я хотел бы проверить, существует ли файл Test.txt в определенном каталоге (имя папки с 16 цифрами).

Я попробовал, например, следующую команду:

Test-Path "C:\Users\<USERNAME>\Desktop\Test\([0-9]{16})\Test.txt"

Следующая команда не может быть использована в моей ситуации.

 Test-Path "C:\Users\<USERNAME>\Desktop\Test\*\Test.txt"

Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Test-Path вернет $ True / $ False, для достижения чего-то похожего вы можете сделать:

((Get-ChildItem "C:\Users\<USERNAME>\Desktop\Test\*\Test.txt" | 
    where FullName -match "\\Test\\\d{16}\\Test.txt$").Count -gt 0)

Но это не покажет, какие папки соответствуют.

0 голосов
/ 14 декабря 2018

Это будет один из способов сделать это:

# This is for PowerShell version 3.0 and up. If you are using an older version, use
# Get-ChildItem -Path "C:\Users\<USERNAME>\Desktop\Test" | Where-Object { $_.PSIsContainer -and $_.Name -match '\d{16}' }

Get-ChildItem -Path "C:\Users\<USERNAME>\Desktop\Test" -Directory | Where-Object { $_.Name -match '\d{16}' } | 
    ForEach-Object {
        $fileName = Join-Path -Path $_.FullName -ChildPath 'Test.txt'
        if (Test-Path -Path $fileName -PathType Leaf) {
            Write-Host "$fileName exists"
        }
        else {
            Write-Host "$fileName does not exist"
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...