我的目录中包含以下文件夹:
000000000000000000,0001251557a1485767,0144dshbc,014758,1114767857484752169和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个数字字符的文件夹。 感谢。
答案 0 :(得分: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])开头的字符串,并立即命中字符串的结尾($)。