2016-04-28 24 views
0

私は、次のフォルダが含まれているディレクトリを持っている検索:PowerShellの:名前のフォルダ内の数字

000000000000000000、0001251557a1485767、0144dshbc、014758、111147857484752169と123456789z

をそして私がこのコードを使用

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]"} 

このコードでは、名前がcontaでないフォルダの名前のみを返すようにしたいと思います正確に18文字の数字で表します。これらのフォルダ

0144dshbc、014758、0001251557a1485767と123456789z

しかし、私はこれらのコマンドを実行したときに、私はなります:

0001251557a1485767、0144dshbcので、結果は次のようになります014758

私の質問:フォルダ「1234 56789z "(名前に18個の数字がありますが、最後に文字があります)。

私の目標は、18文字の数字を持たないすべてのフォルダを見つけることです。おかげさまで

答えて

1

このコードでは、名前に完全に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()ステートメントにあります。理解できる長さの確認。マッチ演算子は、(^によって示される)1つ以上の数字([+ 9])で始まり、すぐに文字列の終わり($)にヒットする文字列を探します。

+0

完璧、ありがとうございます。 – ghostrat26

関連する問題