1. ホーム
  2. windows

[解決済み] Windowsのコマンドライン環境を使って、ファイル内のテキストを検索・置換するにはどうすればよいですか?

2022-03-17 20:18:45

質問

Windowsのコマンドライン環境を使ってバッチファイルのスクリプトを書いているのですが、ファイル内のあるテキスト(例:"FOO")を別のテキスト(例:"BAR")に変更したいのです。一番簡単な方法は何でしょうか?何か内蔵の関数がありますか?

どのように解決するのですか?

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

私はWindows7を使用しており、PowerShellが内蔵されています。以下は、ファイル内のテキストのすべてのインスタンスを検索/置換するために私が使用したスクリプトです。

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

説明すると

  • powershell Windows 7 に含まれる powershell.exe を起動します。
  • -Command "... " は、実行するコマンドを含む powershell.exe のコマンドライン引数です。
  • (gc myFile.txt) の内容を読み取ります。 myFile.txt ( gc の略称です。 Get-Content コマンド)
  • -replace 'foo', 'bar' を置き換えるためにreplaceコマンドを実行するだけです。 foobar
  • | Out-File myFile.txt は出力をファイルにパイプします。 myFile.txt
  • -encoding ASCII コメントで指摘されているように、出力ファイルをユニコードに転記することができない

Powershell.exeはすでにPATH文の一部になっているはずですが、そうでない場合は追加することができます。私のマシンでは、以下の場所にあります。 C:\WINDOWS\system32\WindowsPowerShell\v1.0

更新情報
最近のWindowsシステムにはPowerShellが組み込まれていて、これを利用して直接アクセスすることができるようです。

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