サクラエディタのgrep置換をコマンドラインで実行するには

あるフォルダに、複数のテキストファイルがある状況で。

バッチファイルを1つ実行すると。

サクラエディタさんの置換機能で、すべてのテキストファイルの該当する文字列を置換する手順を記録させて頂こうと思います。


サクラエディタのインストール

公式ホームページ内のリンクから、サクラエディタさんをダウンロードさせて頂きました。

https://sakura-editor.github.io/

バージョンは2.4.1でした。インストール版のWin32-Release-Installer.zipをダウンロードさせて頂きました。

インストール時、インストール先のフォルダを確認しておきます。図と同じ(x86)付きのPorgram Filesフォルダにインストールされた場合、次のバッチファイルをそのまま使用できます。


複数ファイルの文字列をまとめて置換するバッチファイル

インストールしたさくらエディタさんのgrep置換機能を、コマンドラインから使用したいのですが。

1行で書くには少々引数が多いことと。

何回か置換したいとき、コピペで簡単に拡張できるように。

バッチファイルを1つ作成します。

次の内容になります。

:start
rem このファイルは対象ファイルと同じフォルダに置いて下さい
set PWD=%~dp0
set SKR="%ProgramFiles(x86)%\sakura\sakura.exe"

:main
rem 対象のファイルの拡張子指定
set TYP="*.txt"

rem SRCに変更前、DSTに変更後の文字列をセットします
set SRC="☆変更前の文字列☆"
set DST="★★★変更後の文字列★★★"
%SKR% -GREPMODE -GCODE=99 -GOPT=U -GKEY=%SRC% -GREPR=%DST% -GFILE=%TYP% -GFOLDER="%PWD%"

rem 複数回置換したい場合set SRCから%SKR%までの3行をコピペで追記して下さい
rem 具体例
set SRC="○変更前の文字列○"
set DST="◎◎◎変更後の文字列●●●"
%SKR% -GREPMODE -GCODE=99 -GOPT=U -GKEY=%SRC% -GREPR=%DST% -GFILE=%TYP% -GFOLDER="%PWD%"

保存時、次の2点にご注意下さい。

  1. 拡張子が必ず「.bat」になるようにファイルの種類は「すべてのファイル(*.*)」を選択
  2. 文字コードは「ANSI」を選択。

置換は2回行っており、それぞれ変更前の文字列、変更後の文字列は下記になります

  1. 11行目から13行目
    • 置換対象の文字列:☆変更前の文字列☆
    • 置換後の文字列:★★★変更後の文字列★★★
  2. 17行目から19行目
    • 置換対象の文字列:○変更前の文字列○
    • 置換後の文字列:◎◎◎変更後の文字列●●●

対象の文字列と、置換後の文字列を適宜変更して下さい。

実際の置換の処理は3行単位になります。必要に応じて追加/削除して下さい。


置換対象のファイルと同じ場所に置いて実行

使い方は、置換したいファイルと同じ場所に、バッチファイルをコピーします。バッチファイルを実行すると、サクラエディタが起動し、置換が実行されます。

具体的には。バッチファイル実行前。

このような内容のテキストファイルが。

バッチ実行後。

該当する文字列が置換されて、このような内容に変わります。

結果が変わらない場合、さくらエディタのインストール先のフォルダが異なる可能性があります。

4行目のSKR環境変数が正しくsakura.exeの場所を示しているか確認してみて下さい。


grepオプションの調整

grep置換実行は、次のオプションを指定しています。

%SKR% -GREPMODE -GCODE=99 ^
-GOPT=U ^
-GKEY=%SRC% ^
-GREPR=%DST% ^
-GFILE=%TYP% ^
-GFOLDER="%PWD%"

こちらの公式サイトの情報を参考にさせて頂きました。

https://sakura-editor.github.io/help/HLP000109.html

  • -GCODE=99は、文字コードとして自動判別を指定。
  • -GOPT=Uは、メイン画面を表示せず、バックグラウンドで実行するために指定。

-GOPTオプションは、サブフォルダも検索する場合(S)や、大文字小文字を区別する場合(L)、正規表現(R)を使用する場合などに追加(変更)する必要があります。

公式サイトをご覧頂いて、調整頂くほうが確実かと思います。


念のため置換前に対象ファイルをバックアップ

自動で複数ファイルを置換する前に。

念のためバックアップをお勧めします。

よろしければ、こちらの方法でフォルダを日時付きで圧縮保存頂くのはいかがでしょうか?

7-Zipで圧縮するときファイル名に日時を簡単に付けるには
ファイルやフォルダを圧縮するとき。 ファイル名の最後に、圧縮した日時を自動でつけられるような。 バッチファイルを記録しておこうと...

これは、間違って置換した場合に、元に戻したほうがシンプルなためです。

間違った内容を置換を使って戻そうとすると、間違いが連続する可能性が御座います。

望むものと異なる置換結果の場合は、バックアップしておいた内容を書き戻したほうが、効率が高いように思えます。


Windows環境で、複数ファイルに渡って、文字列を置換する手段として。

さくらエディタさんのgrep機能は、私は本当に素晴らしい機能をご提供頂いていると思います。

開発に関係する皆様に感謝し、ありがたく使用させて頂こうと思います。

スポンサーリンク

フォローする

スポンサーリンク