如何通過拆分路徑從文字路徑獲取檔案名?為什么literalPath引數集沒有-Leaf引數?
Split-Path -LiteralPath "D:\myDir\file.txt" -Leaf
預期為 file.txt
uj5u.com熱心網友回復:
這是一個不幸的錯誤,-LiteralPath它不適用于諸如-LeafPowerShell 7.2.4 之類的開關 - 請參閱GitHub 問題 #8751。
但是,該錯誤是良性的,因為可以改用(可能是位置隱含的)-Path,因為默認情況下(可能基于通配符的路徑)和(逐字路徑)之間的通常區別-Path不適用于執行的純文本處理,正如Santiago Squarzon指出的那樣。-LiteralPathSplit-Path
換句話說:以下應該按預期作業(將檔案路徑隱式系結到-Path引數,位置):
Split-Path "D:\myDir\file.txt" -Leaf # -> 'file.txt'
相反,這意味著 - 默認情況下 -Split-Path不會決議基于通配符的路徑 - 會發生純文本拆分:
# NO wildcard resolution (matching), despite (implied) use of -Path
Split-Path "D:\myDir\*.txt" -Leaf # -> '*.txt'
如果需要通配符決議,請將(可能隱含的)-Path引數與-Resolveswitch結合起來:
# Wildcard resolution (matching), due to use of -Resolve with (implied) -Path
Split-Path -Resolve "D:\myDir\*.txt" -Leaf # -> 'foo.txt', 'bar.txt', ....
請注意,與和 與結合使用時,兩者之間的區別確實很重要-Path-LiteralPath -Resolve:
使用
-Path,-Resolve執行通配符決議并使用匹配檔案和/或目錄的完整路徑進行拆分(如果有);如果沒有匹配項,則沒有輸出。使用
-LiteralPath,-Resolve僅將逐字輸入路徑決議為完整路徑并使用完整路徑進行拆分;如果路徑不存在,則報告非終止錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487126.html
標籤:电源外壳
