在將以下 PowerShell 腳本與正則運算式一起使用時。
問題: 我沒有為檔案名回傳任何資料。
POWERSHELL 中的當前結果:

POWERSHELL 中的預期結果:

這個正則運算式演示正在做我認為它應該在正則運算式中做的事情。(源自這個問題。)
POWERSHELL 腳本:
$InStuff = @('111111_SMITH, JIM_END TLD 6-01-20 THR LEWISHS.pdf','222222_JONES, MIKE_G URS TO 7.25 2-28-19 SA COOPSHS.pdf')
switch -Regex ($instuff) {
'^(^.{0,6})*|(?!.*_).*(?=\.)'{
[pscustomobject]@{
EmployeeID = $matches.1
FileName = $matches.2
}
}
}
問題: 我需要更改哪些檔案名才能顯示在 PowerShell 結果中?
uj5u.com熱心網友回復:
似乎一個簡單的.Split()可以實作你正在尋找的東西。該方法會將字串拆分為3 個標記,然后分配給$aEmployeeID 、 User (我們$null在這里簡單地忽略此標記,因為您已經宣告它不感興趣)和FileName。在 PowerShell 中,這稱為多重賦值。$null$b
$b要根據您的評論中的要求從令牌中洗掉擴展名,也不需要正則運算式,您可以使用Path.GetFileNameWithoutExtension方法。System.IO
$InStuff = @(
'111111_SMITH, JIM_END TLD 6-01-20 THR LEWISHS.pdf'
'222222_JONES, MIKE_G URS TO 7.25 2-28-19 SA COOPSHS.pdf'
)
foreach($i in $InStuff) {
$a, $null, $b = $i.Split('_')
[pscustomobject]@{
EmployeeID = $a
FileName = [System.IO.Path]::GetFileNameWithoutExtension($b)
}
}
結果是:
EmployeeID FileName
---------- --------
111111 END TLD 6-01-20 THR LEWISHS
222222 G URS TO 7.25 2-28-19 SA COOPSHS
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/436141.html
