rmsmf-txprobe & mfsr-mfprobe 使い方の分かりやすい解説

複数のテキストファイルの文字列置換、改行コード・エンコーディング変換を一括で、しかも高速に処理したいと思ったことはありませんか? 今回、その課題を解決するために開発したコマンドツールをご紹介します。

それぞれの機能と使い方を、分かりやすく解説したいと思います。
「なぜ、この仕様なのか」という説明は、ここでは行いません。別の記事で解説したいと思います。

導入の前提知識

コマンドは四つありますが、rmsmf と mfsr の仕様と機能は全く同じです。
また、txprobe と mfprobe も仕様と機能は全く同じです。
両者の違いは実行基盤の種類にあります。
rmsmf と txprobe は、.NET Framework を必要としますが、mfsr と mfprobe は .NET Runtime を必要としません。

rmsmf と txprobe は .NET Framework 4.8 用に開発したコマンドです。
mfsr と mfprobe は、rmsmf と txprobe をそのまま .NET 10 へ移植した物です。

したがって、rmsmf と mfsr 、そして txprobe と mfprobe は、機能も使い方も同じになります。

rmsmf と txprobe は同一の ZIP ファイル(rmsmf.zip)で提供しており、
mfsr と mfprobe も同一 ZIP(mfsr.zip) で提供しています。

rmsmf と txprobe は .NET Framework 4.8 のマネージドコードですが、
mfsr と mfprobe は .NET 10 上で開発してはいますが、Native AOT によりビルド発行しており、その実行ファイルはネイティブコードになっています。
よって、.NET 10 の Runtime は必要ありません。
リリース開始の2026年2月1日時点では、Windows用ネイティブコードしか発行していません。
Mac や Linux 用は、ファイルシステムやシェルの仕様に合わせてカスタマイズする必要があり、現在対応しておりません。

ダウンロードとインストール

ダウンロードは、以下のページから行えます。
https://snow-stack.net/tools/
GitHub の Release から それぞれの ZIP ファイルをダウンロードし、ローカルPC上で ZIP ファイルを解凍します。
rmsmf-txprobe ならば rmsmf.zip を
mfsr-mfprobe ならば mfsr.zip を、ローカルで解凍してください。(エクスプローラーなら開くだけで内容を閲覧できます)

コマンド 実行基盤 ZIPファイル インストールでコピーするファイル
rmsmf & txprobe .NET Framework rmsmf.zip ZIPを解凍したファイル全て
mfsr & mfprobe Native AOT mfsr.zip それぞれの .exe ファイルだけ

インストーラーは用意していません。
単純なコマンドなので、実行ファイルをPathフォルダーにコピーするだけで使用できるようになります。

ZIPを解凍したファイル全てを、環境変数 Path に記載されているフォルダーへ全てコピーします。
あとは、PowerShell や cmd をターミナルで起動すれば、プロンプトからコマンドを使用することができます。
(mfsr-mfprobe の場合は、それぞれの .exe ファイルだけコピーすれば良いです)

基本機能の解説

rmsmf-mfsr は更新機能を有し、txprobe-mfprobe は読み取り専用のコマンドです。

rmsmf-mfsr 基本機能

rmsmf-mfsr の基本機能は、「複数文字列を複数のテキストファイルに対して一括で置換する」という機能です。
その文字列置換機能を実現する為に、「文字エンコーディング変換」「改行コード編集」「BOMの追加・変換や削除」機能も有しています。
rmsmf-mfsr は、基本となる「文字列置換」機能を省略して、「文字エンコーディング変換」「改行コード編集」「BOMの追加・変換や削除」を行うことができます。

txprobe-mfprobe 基本機能

txprobe-mfprobe の基本機能は、「複数文字列を含むテキストファイルを検索する」という機能です。
ここで検索したファイル一覧を、rmsmf-mfsr に渡して置換など更新処理を行わせることもできます。
その文字列検索機能を実現する為に、「文字エンコーディングの種類を確認」「改行コード種類の確認」「BOMの有無の確認」機能も有しています。
txprobe-mfprobe は、基本となる「文字列検索」機能を省略して、「文字エンコーディング確認」「改行コード確認」「BOMの有無確認」を行うことができます。

更新コマンドの詳しい使い方

rmsmf と mfsr の使い方は、全く同じです。
ここでは、最新の.NET10ベースで開発している mfsr を例に説明します。
mfsr と書かれた部分を rmsmf に置き換えても、全く同じに動作します。

文字列の置換

基本機能である文字列置換のやり方です。
rmsmf-mfsr は、文字列置換をするとき、複数の文字列を扱うため、別途「置換単語リスト」というCSVファイルを用意する必要があります。
これは、単純にカンマ区切りのCSVファイルで、一列目に「検索対象文字列」を、二列目に「置換文字列」を記述したCSVファイルです。CSVにヘッダー・フッターなどは必要ありません。
CSVファイルのファイル名に、特に規則はありません。

置換単語リスト.CSV

検索対象文字列1,置換文字列1
検索対象文字列2,置換文字列2
検索対象文字列3,置換文字列3
・・,・・・
・・,・・・
検索対象文字列n,置換文字列n

置換単語リスト.CSV を作成したら、以下の様に /r: オプションでCSVファイル名をパラメータに指定し、置換対象ファイル名をメインパラメータに指定して、コマンドを実行します。

仮に 置換単語リスト.CSV のファイル名を replacelist.csv とします。

mfsr /r:replacelist.csv textfile.txt

これで、textfile.txt の中の 検索対象文字列1~n が、置換文字列1~n に全て置換されます。

ファイル名には、ワイルドカードを指定する事も可能です。

mfsr /r:replacelist.csv *.txt

これにより、カレントディレクトリの全ての .txt ファイルが、replacelist.csv の内容に従って、文字列置換されます。
/d オプションを指定すると、ワイルドカード指定によりサブディレクトリも検索対象になります。

mfsr /r:replacelist.csv *.txt /d

オプションの記述ルール

コマンドラインにおけるオプションの位置は自由です。
rmsmf-mfsr と txprobe-mfprobe のコマンドパラメータの機構は全て同じで、メインパラメータは「ファイル名」だけです。
他は全て省略可能なオプションとして実装しています。
オプションは、メインパラメータ「ファイル名」の前にも後ろにも自由に記述できます。
以下の様に全てのオプションを後ろに記述する事もできます。

mfsr *.txt /d /r:replacelist.csv 

オプションパラメータの記述ルール

/r オプションの直後に :(コロン) を記述して、その直後に replacelist.csv を記述しています。
オプションの直後に : (コロン)で区切って記述するパラメータを、ここではオプションパラメータと呼びます。
オプションパラメータを入力するときは、必ずオプションの直後に : (コロン)で区切って記述してください。
(重要):(コロン)の前後に空白などを入れてはいけません。 必ず文字列として繋げてください。
オプションとオプションパラメータをPowerShell が一つの文字列として認識できるように入力してください。
:(コロン)の前後に空白があると、オプションパラメータを独立したオプションと誤解し、エラーになります。

:(コロン)は、= (イコール) で代用する事もできます。

mfsr *.txt /d /r=replacelist.csv

改行コードの種別を指定する

rmsmf-mfsr は、文字列置換を実施するとき、/nl:オプションにより改行コードの種類を指定できます。

mfsr /d /r:replacelist.csv *.txt /nl:lf

指定できる改行コードの種類は、crlf , lf , cr の三種類です。
しかし、オプションパラメータはもっと分かりやすい物も指定できます。
crlf と同じ機能の、win , windows , w というオプションパラメータが使えます。
lf と同じ機能の、unix , u , linux , l , mac , m が使えます。
cr と同じ機能の、oldmac , old が使えます。

置換処理を省略する

rmsmf-mfsr は、文字列置換機能の /r:オプションを省略して改行コード変換だけ行うことができます。

mfsr *.txt /nl:lf

上の例は、カレントディレクトリの全ての .txt ファイルの改行コードをUNIX式の LF (ラインフィード) に変換する処理です。
/r:オプションを指定していないので、置換処理は実行しません。

BOMを追加・削除する

rmsmf-mfsr は、文字列置換を実施するとき、/b:オプションによりBOMの有無を指定できます。
Unicodeテキストファイルへ書き込む場合に限り /b:true でBOMを付ける、/b:false でBOMを付けないように指定できます。

mfsr /r:replacelist.csv *.txt /b:true

「BOMを付けない」あるいは「BOMを削除する」場合は、/b:false 以外にも /b:no , /b:n などの指定が可能です。 false , no , n 以外の文字列は全て /b:true 扱いとなります。

置換処理を省略する
rmsmf-mfsr は、文字列置換機能の /r:オプションを省略してBOM変換だけ行うことができます。

mfsr *.txt /b:false

文字エンコーディングの変換

rmsmf-mfsr は、通常は対象テキストファイルの文字エンコーディングを自動判定して、全ての編集処理を実行します。
しかし、文字エンコーディングの自動判定処理は完全ではありません。正確に言えばBOMの様なマークも無しに、文字エンコーディングを100%正確に推測することは不可能なのです。
rmsmf-mfsr は、かなり正確に文字エンコーディングを推測しますので、通常は読み取り側の文字エンコーディングを意識することなく rmsmf-mfsr を使用することができます。
しかし、対象テキストの内容によっては、推測できない場合も、推測を間違う場合もあります。
通常は、先に txprobe-mfprobe コマンドで、文字エンコーディングの自動判定を行ったあとで、 rmsmf-mfsr による更新処理を実行します。

文字エンコーディング指定オプション /c: /w:

txprobe-mfprobe で正しい文字エンコーディングを推測できなかった場合は、ユーザーが /c:オプションで正しい文字エンコーディングを指定することで、rmsmf-mfsr を使用します。

mfsr /r:replacelist.csv *.txt /c:shift_jis /w:utf-8 

/c:オプションは読み取り側の文字エンコーディングを指定するオプションです。
/w:オプションは書き込み側(変換後)の文字エンコーディングを指定するオプションです。

文字エンコーディングのオプションパラメータは、/h:enc を入力すると一覧表示されます。

mfsr /h:enc

Available Encodings for /c: and /w: options:
=============================================

ASMO-708 (708)                ibm775 (775)                  windows-1251 (1251)
big5 (950)                    ibm850 (850)                  windows-1252 (1252)
cp1025 (21025)                ibm852 (852)                  windows-1253 (1253)
cp866 (866)                   IBM855 (855)                  windows-1254 (1254)
cp875 (875)                   ibm857 (857)                  windows-1255 (1255)
......

/h:enc で文字エンコーディング名を一覧表示すると、括弧の中にコードページが一緒に表示されます。

/c:と/w:オプションには、オプションパラメータに文字エンコーディング名以外に、コードページも指定できます。

mfsr /r:replacelist.csv *.txt /c:932 /w:65001

文字エンコーディング推測機能の切替

rmsmf-mfsr と txprobe-mfprobe は、同じ文字エンコーディング推測機構を持っていて、事前に txprobe-mfprobe で文字エンコーディングを調べる事で、対象テキストファイルの文字エンコーディングを正確に推測できるのか否かを、試すことができます。

mfprobe *.txt

rmsmf-mfsr と txprobe-mfprobe は、この文字エンコーディング推測機構を二つ持っています。
一つは、独自実装した固有の文字エンコーディング推測機能です。
もう一つは、UTF.Unknown という iconv と同じ推論ロジックを採用した、サードパーティ製の推論機構です。UTF.Unknown も MITライセンスです。
/det:オプションを使用することで、文字エンコーディング推測機構を切り替えることが可能です。

mfprobe *.txt /det:3

/det:のオプションパラメータは 0,1,3 の三種類です。
/det:1 がファーストパーティ(独自実装)だけで、文字エンコーディング判定処理を行うモードです。
/det:3 がサードパーティ製(UTF.Unknown)だけで、文字エンコーディング判定処理を行うモードです。
/det:0 は、最初にファーストパーティ(独自実装)で文字エンコーディング判定を試み、推測できなかったら、サードパーティ製(UTF.Unknown)を使用して文字エンコーディング判定を試みます。
どちらを使っても分からない場合は、Unknown と表示します。
この /det:オプションの使い方は、txprobe-mfprobe も rmsmf-mfsr も同じです。

/v オプションを使用することで、サードパーティ製品を含むライセンス情報が表示されます。

mfprobe /v

mfsr /v

国(カルチャー)情報の切替

Unicodeではない古い文字エンコーディングの判定処理は、国ごとに異なる処理が走ります。
通常、国(カルチャー)情報は、OSから取得してOSと同じカルチャー情報で、文字エンコーディングの判定処理を実行しています。
例えば Shift_JIS であるかどうかの推測処理は、カルチャー情報が日本(ja-JP)のときしか機能しません。big5 であるかどうかの推測処理は、カルチャー情報が台湾(zh-TW) のときしか機能しません。
日本のOSを使用しながら big5 のテキストファイルを扱うのなら、/ci:オプションでカルチャー情報を台湾に切り替える必要があります。

mfprobe *.txt /ci:zh-TW

mfsr *.txt /w:utf-8 /ci:zh-TW

( /c:オプションを使用し、文字エンコーディングを手動指定する場合はカルチャー情報の切替は不要です)

使用できるカルチャー情報は、/h:cul オプションで一覧表示されます。

mfprobe /h:cul

aa                  en-NG               iu-CA               quc-GT
aa-DJ               en-NL               iu-Latn             raj
aa-ER               en-NR               iu-Latn-CA          raj-IN
aa-ET               en-NU               ja                  rm
af                  en-NZ               ja-JP               rm-CH
.....

テキストファイルの内容確認(読み取り専用コマンド)

txprobe と mfprobe の使い方は、全く同じです。
ここでは、最新の.NET10ベースで開発している mfprobe を例に説明します。
mfprobe と書かれた部分を txprobe に置き換えても、全く同じに動作します。

txprobe-mfprobe は、読み取り専用のコマンドです。
更新機能はありませんので、操作ミスでファイルを破損してしまう心配はありません。
txprobe-mfprobe は、rmsmf-mfsr コマンドを使用して更新処理を実行する前に、対象ファイルの内容について事前確認する事を目的に使用します。
もし、文字列置換処理をするならば、事前に対象文字列が存在するファイルがどれかを確認することがでます。
改行コードが CR・LF(Windows方式)か、 LF(UNIX方式)かを事前に調べることもできます。
対象ファイルが UTF-8・UTF-16・UTF-32 ならば、BOM付きか否かを確認することができます。
もし、txprobe-mfprobe の検査結果を見て、変換処理が必要ならば、対象ファイルだけ rmsmf-mfsr コマンドで編集すれば良いのです。

txprobe-mfprobe の基本的な使い方は、対象ファイル名を指定するだけです。

mfprobe *.txt

これだけで、カレントディレクトリの全ての .txt ファイルの文字エンコーディング・改行コードの種類・BOMの有無が一覧表示されます。

txprobe-mfprobe は、いくつか rmsmf-mfsr と同じオプションが使用できます。
/d サブディレクトリも検索対象にする。
/c: 対象ファイルの文字エンコーディングを指定する。

複数文字列の検索

txprobe-mfprobe は、複数文字列の含まれているテキストファイルを検索することができます。
この機能は、rmsmf-mfsr で対象文字列の置換を行うための、事前確認のために必要な機能です。
先に、txprobe-mfprobe で、置換対象文字列が含まれているテキストファイルを特定して、そのテキストファイルだけを置換処理対象にすることができます。
検索文字列は、事前にテキストファイルに記述しておきます。

検索文字列リスト(ここでは search.txt と命名します)

検索単語1
検索単語2
検索単語3
…
検索単語N

このファイル名を、/s:オプションのオプションパラメータで指定します。

mfprobe /s:search.txt *.txt /d

検索文字列のどれか一つを含むファイル名とその内容属性を一覧表示します。

この場合は検索目的なので、ファイル名はワイルドカードを使用することが大半になるでしょう。
また、サブディレクトリも検索対象にする事が多いので、/d オプションを付ける機会が大半だと思います。

検索結果にはファイル名と文字エンコーディング・改行コード種類・BOMの有無、しか表示されません。
「どの検索文字列が含まれていたのか」という情報は含まれません。「検索文字列が含まれているかどうか」だけ分かれば「そのファイルが後の置換処理の対象になるか否か」は分かるので、表示していないのです。
もし、「どの検索文字列が含まれていたのか」が知りたければ /p オプションを付けると、ファイル名と検索文字列を表示してくれます。

mfprobe /s:search.txt *.txt /d /p

検索結果のファイル出力

txprobe-mfprobe は、/o:オプションを指定すると、検索結果一覧をファイルに出力します。
/o:のオプションパラメータに出力ファイル名を記述して実行すると、その出力ファイル名に検索結果をソートして書き出します。

mfprobe /s:search.txt *.txt /d /o:out.txt

/o:のオプションパラメータは省略できます。
省略した場合は、output_filelist.txt というデフォルトファイル名に出力します。

mfprobe /s:search.txt *.txt /d /o

/p オプションを付けずに出力したファイルリストは、rmsmf-mfsr/f:オプションのオプションパラメータに指定することで、そのリストのファイルだけを rmsmf-mfsr の更新対象にする事ができます。

mfsr /f:out.txt /r:replacelist.csv  

/f:オプションを指定するときは、メインパラメータでファイル名を指定することはできません。

**重要**
なお、/p オプションを付けてもファイルリストは出力しますが、同一ファイルが複数出力されたファイルリストは、 rmsmf-mfsr に渡すファイルリストとしては更新処理の重複を招くので、不適切です。
rmsmf-mfsr に渡すなら、/p オプションは付けない方が良いです。

また、txprobe-mfprobe にも /f: オプションがあり、ファイルリストを渡して、そこに記述されているファイルだけを検索対象にすることができます。
これは、手動でファイルリストを作成したいときに、便利です。

mfprobe /f:out.txt 

その他の機能

ファイルリストの文字エンコーディング指定

txprobe-mfprobe と rmsmf-mfsr の両方で /fc:オプションによって、/f:オプション /o:オプションの対象となるファイルリストの文字エンコーディングを指定することができます。

mfprobe /s:search.txt *.txt /d /o:out.txt /fc:shift_jis

mfsr /f:out.txt /fc:shift_jis /nl:win

検索文字列リストの文字エンコーディング指定

txprobe-mfprobe では、/sc:オプションにより、検索文字列リストファイルの文字エンコーディングを指定できます。

mfprobe /s:search.txt /sc:shift_jis *.txt

置換単語リストCSVの文字エンコーディング指定

rmsmf-mfsr では、/rc:オプションにより、置換単語リストCSVの文字エンコーディングを指定できます。

mfsr /r:replacelist.csv /rc:shift_jis *.txt

注意事項

rmsmf-mfsr , txprobe-mfprobe は、どれも PowerShell のオブジェクトパイプラインには対応しておりません。 cmd でも使用できるように開発しているので、PowerShell固有のオブジェクトパイプラインに合わせていないのです。 よって、Export-Csv や Export-Clixml で検索結果を CSV や XML に落とすことはできません。

結果をファイル出力したいときは、txprobe-mfprobe の /o:オプションを使用してください。

以上で、rmsmf txprobe, mfsr mfprobe の解説を終わります。

名前の根拠

最後に、コマンド名とオプション名の由来を記載しておきたいと思います。

コマンド名 名前の根拠
rmsmf Replace Multiple Strings in Multiple Files
txprobe Text file Probe
mfsr Multi-File String Replacer
mfprobe Multi-File Probe
通常オプション 名前の根拠
/d sub Directory
/b BOM (Byte Order Mark)
/nl New Line
/r Replace
/s Search
/c Character encoding
/w Written character encoding
/f File list
/p Probe
特殊文字エンコーディング指定 名前の根拠
/rc Character encoding of Replacement word list. 前後逆です。
/sc Character encoding of Search word list. 前後逆です。
/fc File list character encoding.
環境設定 名前の根拠
/det Detector option
/ci Culture Info