TIPS:Windowsで複数ファイルの文字列置換をワンクリックで行う複数のテキスト・ファイル内にある文字列を置き換えるには、一括処理するツールがあると便利である。Windowsに標準搭載されているスクリプト実行環境を利用することで、テキスト処理を自動化させることができる。置き換え文字列の指定には、固定文字列だけでなく、正規表現を使用することもできる。単一のテキスト・ファイルに含まれる特定の文字列を指定された文字列で置き換えることは、メモ帳などのテキスト・エディタでも十分に可能である。いざ対象が複数のファイルにまたがっていると、その作業は途端に煩雑となる。いちいち個々のファイルを開いて置き換えを実行する手間はいうまでもなく、そうした冗長な手順は間違いを誘発する一因ともなる。本サンプルの文字列一括置換ツールを利用すれば、複数のテキスト・ファイルもただドラッグ&ドロップするだけで、簡単にすべての文字列を置き換えることができる。置き換え規則には正規表現を使用できるから、より複雑な編集を行いたいといった場合にも、十分に応用が利くものであろう。操作方法それではさっそく、文字列の一括置換ツールを作成してみよう。Host)を使って作成してみる。仕様としては、置換ツール上にエクスプローラで対象ファイルをドラッグ&ドロップすると、自動的に文字列が置換され、元のファイルの内容が更新されるものとする。サンプル・プログラムを単純にするため、置換する文字列の指定はハード・コーディング(プログラム中に直接記述すること)するものとし、(作業中の障害に備えた)オリジナル・ファイルのバックアップなども行わないものとする。必要ならばそれらの処理は適宜追加していただきたい。●置換ツール・プログラムの作成まずはテキスト・エディタ(メモ帳でもなんでもよい)を開き、以下のコードを入力して、replace.wsfという名前で保存する。囲まれた部分は処理の内容を解説するためのコメント部分なので、省略しても構わない。ドラッグ&ドロップされたファイルのパスを文字列配列として取得する。生成された一時ファイル名を、それぞれ取得する。ようなパスが生成される。TextStreamオブジェクトとして返す。文字列strReplが登場したら、文字列strWithで置き換える。クリックして、replace.wsfというファイル名で保存してください。Language)形式のファイルである。Script)やJScriptなど、標準的なスクリプト言語を利用して、一連のバッチ処理を記述することができる。ここでは、WSHの基本に関して詳細は割愛するが、「<script>タグ(要素)」で囲まれた実際のロジック部についてのみ、簡単にコード中にコメントを付加しておいた。内部のロジックを理解しておくことで、自分自身でコードをカスタマイズする際にも役立つだろう。置換文字列を変更するには、冒頭の方にある「strRepl」と「strWith」に対する代入文の部分を変更していただきたい。File)とする必要がある。ツールの実行方法replace.wsfを実行するには、エクスプローラでreplace.wsfの格納されたフォルダを開いておき、そのアイコン上に置き換え対象のテキストファイルをドラッグ&ドロップするだけだ。複数ファイルをドラッグ&ドロップすれば、それらは一括して処理される。今回の例では、テキスト・ファイル中に含まれる「Shift_JIS」という文字列が、すべて「EUC-JP」に置き換わるので、任意のテキストを用意して確認してみてほしい。実際に利用する場合には、コード中の変数strRepl(置き換え前の文字列)、strWith(置き換え後の文字列)を目的に応じて適宜変更してから実行していただきたい。正規表現を利用する場合は、次の例のように、正規表現の前後を「/」で囲み、最後に「g」を付けておく(“g”がないと、各行につき、最初に一致する1つだけしか置換されない)。*/なお、本稿では割愛するが、例えば置き換え文字列の情報をプログラム中にハード・コーディングするのではなく、別の設定ファイルとして記述できるようにすることで、より柔軟な置き換えにも対応できるようになるだろうし、再帰呼び出しなどのアルゴリズムを用いることで、ある特定のフォルダ配下にあるファイルをすべて対象にする、というようなことも考えられる。応用の可能性はあるので、次の機会にはさらに活用してみたい。