質問: (ディレクトリ内の)複数のテキストファイル内の文字列を検索してwindows cmdで置き換える方法は? ディレクトリ内に複数のテキストファイルがあり、それぞれの文字列1 setlinewidthを10 setlinewidthに置き換える必要があります。 windows cmdでこれを行うにはどうすればよいですか?助けてください。
回答: サードパーティのユーティリティをインストールできる場合、gnu sed はこのタイプの操作用にカスタマイズされています。リンクは、ダウンロードしてインストールできるsourceforgeでホストされているwindowsバージョンを指します。これはプロンプトでの構文になります:for %i in (*.txt) do sed -i "s/1 setlinewidth/10 setlinewidth/g" %i 注:-iオプションを指定すると、sedは問題のファイルを上書きするため、万が一に備えて簡単に使用可能なバックアップがあることを確認してください何かがおかしい。sedユーティリティをインストールできない場合、組み込みのバッチ言語だけを使用すると、これははるかに困難になります。編集:外部ツールなしで置換を実行する小さなバッチファイルをまとめました。 foo.cmdまたは任意の名前を付けて保存し、コマンドラインから次のように呼び出します:foo.cmd警告:これは質問の例から非常に具体的に書かれています。 1 setlinewidthの前後の行の先頭または末尾に他のテキストまたは余分なスペースがある場合、このバッチファイルは機能しません。これにより、元のテキストファイルのコピーが.bak拡張子(例:textfile.txt.bak)として保存されます。@echo off setlocal enableextensions setlocal enabledelayedexpansion for %%a in (*.txt) do ( echo processing %%a... for /f "delims=^ tokens=1" %%i in (%%a) do ( if /i "%%i"=="1 setlinewidth" ( echo 10 setlinewidth>>%%a.new ) else ( echo %%i>>%%a.new ) ) move /y %%a %%a.bak > nul ren %%a.new %%a )