web-dev-qa-db-ja.com

「\」で終わる場合にパスをトリミングするPowershellコマンド

パスが_\_で終わる場合は、パスをトリミングする必要があります。

_C:\Ravi\
_

に変更する必要があります

_C:\Ravi
_

パスが_\_で終わらない場合があります(その場合はスキップする必要があります)。

.EndsWith("\")で試しましたが、_\\_ではなく_\_を使用すると失敗します。

これは、条件に頼らずにPowerShellで実行できますか?

10
Ravichandra

過度に複雑にする必要はありません

"C:\Ravi\".trim('\')
6
Loïc MICHEL

代わりにTrimEndを使用することを検討してください(特にUNC Pathを使用している場合):

"C:\Ravi\".TrimEnd('\')
31
Martin Brandl

「\」と「\\」で終わるパスを区別する必要があり、場合によってはそれらを異なる方法で処理する必要があるとのことです。 .Trim("\")または.TrimEnd("\")を使用して、指定した例の末尾の「\」文字を削除できますが、どちらのメソッドもallパスからの末尾のスラッシュ。

次の正規表現は、パスが単一の「\」で終わる場合はTrueを返しますが、複数の「\」文字で終わる場合はfalseを返します。

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

正規表現の意味:

  1. できるだけ多くの文字の文字列、
  2. バックスラッシュではないものまで
  3. 1つの円記号が続きます

与える:

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

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

これがお役に立てば幸いです/おもしろいです。 :-)

2
Charlie Joynt