我很难找到一种方法来获取PowerShell中文件名中的第一组数字。文件名可以类似于下面的文件名,但我只想获得第一个数字字符串,而不是其他任何内容。
示例文件名:
123456 (12).csv
123456abc.csv
123456(Copy 1).csv
123456 (Copy 1).csv
我目前正在尝试:
$test = "123456 (12).csv"
$POPieces = $test -match "^[0-9\s]+$"
Write-Host $POPieces
我对此的期望:
123456
答案 0 :(得分:2)
-match
运算符将匹配项存储在automatic variable $matches
中。但是,您的正则表达式不仅包括数字,还包括空格(\s
),因此您不一定只得到数字。将表达式更改为^\d+
以仅匹配字符串开头的数字。使用Get-ChildItem
枚举文件,建议为Martin Brandl。
$POPieces = Get-ChildItem 'C:\root\folder' -Filter '*.csv' |
Where-Object { $_.Name -match '^\d+' } |
ForEach-Object { $matches[0] }