2016-04-28 69 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]"} 

我希望此代码仅返回名称不包含的文件夹的名称正好有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()语句中。检查长度是可以理解的。匹配运算符查找以(由^表示)一个或多个(用+表示的数字)([0-9])开头的字符串并立即到达字符串的末尾($)。

+0

完美的作品,谢谢。 – ghostrat26

相关问题