この投稿から、ディレクトリのサブファイル内の文字列を Windows XP の Powershell に置き換えることができました。
foreach ($f in gci -r -include "*.bat")
{ (gc $f.fullname) |
foreach { $_ -replace "D:","C:\path" } |
sc $f.fullname
}
残念ながら、いくつかの例外的なケースでは、"C:\" ではなく "C:\\" が必要でした。
次のコマンドを使用してこの問題を解決しようとしましたが (「C:\path\\」を「C:\\path\\」に置き換えます)、失敗しました:
foreach ($f in gci -r -include "*.bat")
{ (gc $f.fullname) |
foreach { $_ -replace "C\path\\","C:\\path\\" } |
sc $f.fullname
}
エラーは次のとおりです。
Invalid regular expression pattern: C:\path\\
問題を回避するためにいくつかのバリアントを試しましたが、すべて同じエラーが発生します (上記の行 #3 を置き換えます)。
foreach { $_ -replace "C:\path\\\\","C:\\path\\" } |
foreach { $_ -replace 'C:\path\\',"C:\\path\\" } |
foreach { $_ -replace "`C:\path\\","C:\\path\\" } |
foreach { $_ -replace 'C:\path\\\\',"C:\\path\\" } |
何かご意見は?