2016-05-09 33 views
4

我需要修剪路徑,如果它以「\」結尾。Powershell命令修剪路徑,如果結束「」

C:\Ravi\ 

我需要改變,以

C:\Ravi 

我有哪裏的道路不會以「\」結束的情況下,(然後,它必須跳過)。

我試過.EndsWith("\")。但是當我有「\\」而不是「\」時它失敗。

是否有powershell的方式,而不是有條件。

+0

爲什麼你需要修剪這條路?根據您的要求,可能有更好的方法來處理它(例如,如果您將字符串連接到一個路徑中,則「Join-Path」將爲您處理它而不進行修剪)。 – alroc

+0

@alroc我不是建立路徑。我正在提取並根據需要進行定義。 – Ravichandra

+0

'Split-Path'可能對您有用。 – alroc

回答

2

無需過分複雜化

"C:\Ravi\".trim('\') 
+0

謝謝老兄.... – Ravichandra

10

考慮使用TrimEnd代替(尤其是如果您正在使用UNC路徑工作):

"C:\Ravi\".TrimEnd('\') 
1

雖然可以使用.Trim("\").TrimEnd("\")刪除尾隨「\ 「你給出的例子中的字符,你提到需要區分以」\「和」\「結尾的路徑,並可能以不同的方式處理這些路徑。請注意,這兩種方法都會從您的路徑中刪除全部尾隨斜線。

以下的正則表達式將返回$ true,如果您的路徑在一個單一的「\」,但如果它在多個結束假「\」字符結尾:

$Path -match '.+[^\\]\\$' 

正則表達式的意思是:

  1. 的儘可能多的字符可能的字符串,
  2. 最多的東西是不是一個反斜槓
  3. 跟着一個反斜槓

,並提供:

"C:\Ravi\" -match '.+[^\\]\\$' 
True 

"C:\Ravi\\" -match '.+[^\\]\\$' 
False 

希望這有助於/很有趣。 :-)