profaim  >  ユーティリティ  >  コマンドプロンプト  >  ユーティリティ群(PRFM_TOOLS)  >  ファイル操作ツール  >  RENAME_REGEX.cmd

RENAME_REGEX.cmd ファイル名を正規表現で置換する

作成日:2013/02/04
Windows 7 コマンドプロンプト PRFM_TOOLS 1.1.0 - RENAME_REGEX

1.コマンドプロンプトで正規表現を使ったファイル名置換を実現する

1−1.ファイル名の一括変換、正規表現が使えると便利ですよね?

Windowsのコマンドプロンプトから呼び出せるファイル名変換ツールを作成しました。特定のパターンに一致したファイル名を変換ルールに従って変換するためのツールです。いずれも Microsoft正規表現の構文(http://msdn.microsoft.com/ja-jp/library/cc392020.aspx) で指定できます。この "RENAME_REGEX.cmd" は当サイトで配布している ユーティリティ群(PRFM_TOOLS) の Ver 1.1.0 以上に収録されています。左記ページのリンクからダウンロードして解凍すれば利用できます。フォルダ名の変換には対応していません。

2.RENAME_REGEX.cmd の仕様

2−1.コマンド仕様

今回作成した RENAME_REGEX.cmd の仕様は下表の通りです。もし本ツールを使用して損害が発生したとしても、その内容や損害の大小に関わらず一切の保証はできませんので、ご了承の上ご使用下さい。

PRFM_TOOLS\FILE\RENAME_REGEX.cmd [option] #1, #2, #3
オプション オプション説明
/A
  • /a と英小文字で指定しても問題ありません。
  • 「Apply(適用する)」 を意味し、実際にファイル名を変更する場合に指定します。/A オプションを指定しない場合はテストモードとして実行され、変更内容の確認はできますが、実際のファイル名変更は行われません。
  • デフォルトテストモードという動作は、正規表現は人為的ミスが発生しやすいことを考慮した安全策です。
/R
  • /r と英小文字で指定しても問題ありません。
  • 「Recursive(再帰的)」を意味し、指定したフォルダ以下に存在する全てのフォルダも対象としたい場合に指定します。フォルダ階層が深くなると所要時間も長くなるため指定には注意が必要です。

引数番号 必須指定 指定種別 引数説明
#1(対象ディレクトリ) 必須 ディレクトリパスとして取り得る文字列
  • 名前変換対象のファイルが入っているディレクトリパスを指定します。両端の「"」は引用符とみなされ除外されます。
#2(変換元ファイルパターン) 必須 任意の文字列
  • 変換元ファイルを判別するための文字列。VBScriptのRegExp#Replaceでサポートされている正規表現を指定します。両端の「"」は引用符とみなされ除外されます。
  • 大文字小文字は区別されます。
#3(変換後ファイルパターン) 必須 任意の文字列
  • ファイルを変換するためのパターンを現す文字列。VBScriptのRegExp#Replaceでサポートされている正規表現を指定します。両端の「"」は引用符とみなされ除外されます。
  • 大文字小文字は区別されます。

 

2−2.使用例

例えばPRFM_TOOLSが "c:\tools" にインストールされている場合として、変換対象のファイルが "c:\temp\" に配置されていたとします。変換対象のファイルは「Page1.txt」、「Page2.txt」の2ファイルで、「Index.txt」と「Page2 - コピー.txt」は変換対象外とします。"Page1"と"Page2"の部分を"Page01"と"Page02"に変換する場合の例を紹介します。以下は当サイトで配布している ユーティリティ群(PRFM_TOOLS) を C:\tools\ に配置している場合の例です。コマンド呼び出しは絶対パス指定でも相対パス指定でも問題ありません。

: 変換内容が想定通りか確認する(テストモードで確認)
C:\tools\PRFM_TOOLS\FILE>RENAME_REGEX C:\temp Page([0-9]\.txt) Page0$0

変換対象:Page([0-9]\.txt)
【対象ディレクトリ】C:\temp
【変換対象外のファイル名】Index.txt
【変換前】Page1.txt 【変換後】Page01.txt
【変換対象外のファイル名】Page2 - コピー.txt
【変換前】Page2.txt 【変換後】Page02.txt
※テストモードで実行しました。実際のファイル名に変更はありません。
※実際のファイル名を変更する場合は /A オプションを指定します。

C:\tools\PRFM_TOOLS\FILE>

: 変換内容が正しければ /A オプションを指定して実行する(実行モードで適用)
C:\tools\PRFM_TOOLS\FILE>RENAME_REGEX /A C:\temp Page([0-9]\.txt) Page0$0

変換対象:Page([0-9]\.txt)
【対象ディレクトリ】C:\temp
【変換前】Page1.txt 【変換後】Page01.txt
【変換前】Page2.txt 【変換後】Page02.txt
※実行モードです。ファイル名の変更を行いました。

C:\tools\PRFM_TOOLS\FILE>


これでファイル名の変換が完了します。

3.トラブルシューティング

3−1.ファイル名として使えない文字を指定した場合

正規表現の誤りならテストモードで確認できますが、変換結果にファイル名として使えない文字を含めてしまった場合はテストモードでは検出できず、実行モードで初めてエラーとなります。出力は以下の様になります。

: ファイル名に使用できない"\"を変換後文字列に含めてしまった場合
C:\tools\PRFM_TOOLS\FILE>RENAME_REGEX C:\temp Index Idx:1

変換対象:Index
【対象ディレクトリ】C:\temp
【変換前】Index.txt 【変換後】Idx:1.txt
[ERROR] 52:ファイルの名前または数が不正です。
※実行モードです。ファイル名の変更を行いました。

C:\tools\PRFM_TOOLS\FILE>

3−2.エラー発生時のファイル名変換状況

ファイル名変換が何らかの理由で変換エラーとなったとしても変換処理は最後まで進み、エラーが発生したファイルを除いてファイル名変換が完了した状態で処理を終えます。

4.より詳細な情報

より実装寄りの詳細な説明はソースコード中のコメントが充実しているので、ソースをダウンロードしてチェックしてみてください。



  ユーティリティ群(PRFM_TOOLS)  
文字列ツール
CONCAT.cmd
LENGTH.cmd
日付ツール
DATE_ADD.cmd
NOW_FORMAT.cmd
ファイル操作ツール
RENAME_REGEX.cmd

PR
検索
カスタム検索





このエントリーをはてなブックマークに追加