簡體   English   中英

Powershell:在名稱文件夾中查找數字

[英]Powershell: Find numbers in name folders

我的目錄包含以下文件夾:

000000000000000000、0001251557a1485767、0144dshbc,014758、111147857484752169和123456789012345678z

我使用以下代碼根據文件夾名稱查找文件夾:

Get-ChildItem | Where-Object {$_.Name -notmatch "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"}

我希望此代碼僅返回其名稱不完全包含18個數字字符的文件夾的名稱。 因此,結果應為:

0144dshbc,014758、0001251557a1485767和123456789012345678z

但是,當我運行以下命令時,將獲得以下文件夾:

0001251557a1485767、0144dshbc和014758

我的問題:我還如何找到文件夾“ 123456789012345678z ”,名稱中有18個數字,但末尾有一個字母。

我的目標是查找所有不包含18個數字字符的文件夾。 謝謝。

此代碼將查找名稱中不完全包含18個數字字符的文件。 詳細的日志記錄將向您顯示每個值的評級方式。 不匹配的值在管道上返回。

$VerbosePreference = 'continue'

$list = Get-ChildItem | Select-Object -ExpandProperty Name
foreach ($item in $list)
{

    if($item.Length -eq 18 -and $item -match '^[0-9]+$' )
    {
        Write-verbose 'is both 18 chars and numeric'
        Write-verbose "- $item, length: $($item.Length)"
    }
    else
    {
        Write-verbose 'is not 18 chars and numeric'
        Write-verbose "- $item, length: $($item.Length)"
        Write-Output $item
    }
}

所有重要的邏輯都在IF()語句中。 檢查長度是可以理解的。 匹配運算符將查找一個以(以^表示)一個或多個(以+表示)數字([0-9])開頭的字符串,並立即擊中該字符串的末尾($)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM