我有一個寫在".ini "檔案中的東西,我想從PS中讀取。該檔案給出了 "notepad.exe "的值,我想把 "notepad "的值輸入一個變數。所以我做了以下作業:
$CLREXE = Get-Content -Path "T:keeranTest-kill est. ini" | Select-String -Pattern 'CLREXE' 。
#split the value from "CLREXE ="
$CLREXE = $CLREXE -split "="/span>
#一切正常,直到這里。
$CLREXE = $CLREXE[1]
#I am trying to omit ".exe" here. 但它并不奏效。
$d = $CLREXE -split "." | Select-String -NotMatch 'exe'
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
@Mathias R. Jessen已經回答了你的問題。
但是你可以使用GetFileNameWithoutExtension方法來代替在檔案名上進行分割。
$CLREXE = "notepad.exe" $fileNameWithoutExtension = [System.IO.Path]::GetFileNameWithoutExtension($CLREXE) Write-Host $fileNameWithoutExtension # 這將只列印 "notepad"。
uj5u.com熱心網友回復:
-split是一個regex運算子,而.是regex中一個特殊的元字符 - 所以你需要轉義它:
$CLREXE -split '. '
更好的方法是使用-replace運算子來洗掉最后一個.和它后面的所有內容:
$CLREXE -replace '. [^.] $'
該重合模式匹配一個字面的點(.),然后是1個或多個非點([^.] ),接著是字串的結尾$。
如果你對正則運算式不適應,你也可以使用.NET的本地字串方法來實作:
$CLREXE.Remove($CLREXE.LastIndexOf('. ' )
在這里,我們使用String.LastIndexOf來定位.最后出現的索引(字串中的位置),然后從那里洗掉任何東西
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/326674.html
標籤:
