Windows のコマンドライン環境を使用してファイル内のテキストを検索して置換するにはどうすればよいでしょうか? 質問する

Windows のコマンドライン環境を使用してファイル内のテキストを検索して置換するにはどうすればよいでしょうか? 質問する

Windows のコマンド ライン環境を使用してバッチ ファイル スクリプトを作成しており、ファイル内の特定のテキスト (例: "FOO") を別のテキスト (例: "BAR") に変更したいと考えています。これを行う最も簡単な方法は何ですか? 組み込み関数はありますか?

ベストアンサー1

ここでの回答の多くは私を正しい方向に導いてくれましたが、どれも私に適したものではなかったので、私の解決策を投稿します。

私は PowerShell が組み込まれた Windows 7 を使用しています。ファイル内のすべてのテキストを検索/置換するために使用したスクリプトは次のとおりです。

powershell -Command "(gc myFile.txt) -replace 'foo', 'bar' | Out-File -encoding ASCII myFile.txt"

説明すると:

  • powershellWindows 7に含まれているpowershell.exeを起動します。
  • -Command "... "実行するコマンドを含むpowershell.exeのコマンドライン引数です
  • (gc myFile.txt)myFile.txt(コマンドgcの短縮形Get-Content)の内容を読み取ります
  • -replace 'foo', 'bar'置換コマンドを実行して置換するfooだけですbar
  • | Out-File myFile.txt出力をファイルにパイプするmyFile.txt
  • -encoding ASCIIコメントが指摘しているように、出力ファイルをUnicodeに転記するのを防ぐ

Powershell.exeはすでにPATHステートメントに含まれているはずですが、含まれていない場合は追加できます。私のマシン上の場所は次のとおりです。C:\WINDOWS\system32\WindowsPowerShell\v1.0

更新
どうやら最近のWindowsシステムにはPowerShellが組み込まれており、これを使用して直接アクセスできます。

(Get-Content myFile.txt) -replace 'foo', 'bar' | Out-File -encoding ASCII myFile.txt

おすすめ記事