• 締切済み

PowerShellの replace演算子で

PowerShellの replace演算子で、キャプチャーしたものと、変数をくっ付けた時、うまく表示できません。これはどうしたらよいのでしょう。 例 21AA-N1-M01.txt 21AB-N2-M02.txt などのファイルがあるとして、先頭から2文字と1番目のハイフンの隣の文字とNの隣の数字に1を加えたものと2番目のハイフン以降をくっ付ける。 21AA-N1-M01.txt → AAN2M01.txt dir *.txt | % {$a = [regex]::Matches($_.Name,'\d+') ; $b = 1 + $a.Value[1] ; $_.Name -replace '..(..)-N(\d)-(.*)',"`$1$b`$3"} $12M01.txt となってしまいます。 "`$1 $b`$3" という風に $1 と $b の間にスペースを入れるか、何か文字を入れると正常な表示にはなりますが、間に余計なものは入れたくないです。 $1 と $b の間に何かエスケープ文字とか入れるのでしょうか?

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

全くの未経験者です。 期待外れかもですが。 $1 $3 は正規表現の置換の文字ですが、 $b は変数名ですよね? くっつけてしまうとどちらなのかと混乱しているのでは? でも対応策はわかりませんけど。

UY-Scuti
質問者

補足

ごめんなさい。 ここでは解決しそうになかったので、他のQ&Aサイトで訊きました。質問してから1時間もしないうちに解決しました。 これ、知恵袋と違って、質問、消せないのね。