17

で終わる場合は、パスをトリムする必要があります\

C:\Ravi\

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

C:\Ravi

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

で試しましたが、代わりに.EndsWith("\")があると失敗します。\\\

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

4

4 に答える 4

49

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

"C:\Ravi\".TrimEnd('\')
于 2016-05-09T11:45:27.163 に答える
8

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

"C:\Ravi\".trim('\')
于 2016-05-09T11:27:57.553 に答える
3

「\」と「\\」で終わるパスを区別する必要があり、おそらくそれらを異なる方法で処理する必要があると述べています。与えられた例で末尾の「\」文字を使用.Trim("\")または.TrimEnd("\")削除することはできますが、これらの方法は両方ともパスからすべての末尾のスラッシュを取り除きます。

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

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

正規表現は次のことを意味します。

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

与える:

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

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

これが役に立てば幸いです/興味深いです。:-)

于 2016-05-09T13:17:31.057 に答える