ファイル名編集マクロ テクニックガイド 目次 1.まず基本 -置換処理でタグ付き正規表現- (1) 検索文字列の例 ([ファイル名限定]"ON") (2) 置換処理の例 2.ちょっと複雑に -ファイル検索を使って- (1) サブフォルダの全ファイルの変名作業 (2) サブフォルダファイル大移動 (3) 他のマクロを利用しての指定ファイル抜き出し 3.一括-リスト変換を使って一覧編集 1.まず基本 -置換処理でタグ付き正規表現-  [置換処理]で覚えて置いて欲しいのは、 "対象がマーク行で正規表現処理の時、タグ付き(秀丸 Ver3.00以上)でも置換処 理が可能(対象が未マーク行の時は不可)です。また、[ファイル名に限定]時、ファ イル名の先頭には、"^"が使用できますが、"$"(行末)は使用できません(マクロ 内部で使用済みだから)。" というところです。  "対象がマーク行で正規表現処理の時"とは、置換処理ダイアログで[対象行]が"Mark" で、[正規表現]チェックボックスが"ON"の時のことです。この場合、当然未マーク行 は処理対象になりません(必要に応じて、未マーク行に対して何らかの処理か、[その まま複写]をして置いて下さい)。  マーク行の正規表現では、タグ付き処理が出来るので、いろいろな応用が利きます。 (1) 検索文字列の例 ([ファイル名限定]"ON")  ・".+" ファイル名全体  ・".+\f" ファイル名全体を表し、タグ指定  ・"^"+(任意文字列) ファイル名先頭指定  ・"^[^\.]+" 拡張子を含まないファイル名全体  ・"^[^\.]+\f" 拡張子を含まないファイル名全体を表し、タグ指定 (2) 置換処理の例  ・任意位置文字列追加   [検索文字列]:".+\f"   [置換文字列]:(任意文字列)+"\0"+(任意文字列)   ".+\f" → "AKT's_\0" ○A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41.mac →A:\Program Files\Uty\Hidemaru\Macro\AKT's_改行文字指定41.mac ○A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41'c.mac →A:\Program Files\Uty\Hidemaru\Macro\AKT's_改行文字指定41'c.mac  ・任意位置文字列削除   [検索文字列]:(任意文字列0)+"\f"+(削除任意文字列1)+"\f"+(任意文字列2)   [置換文字列]:"\0\2"   "AKT's_\f改行文字指定" → "\1" ○A:\Program Files\Uty\Hidemaru\Macro\AKT's_改行文字指定41.mac →A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41.mac ○A:\Program Files\Uty\Hidemaru\Macro\AKT's_改行文字指定41'c.mac →A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41'c.mac  ・並べ替え   [検索文字列]:(任意文字列0)+"\f"+(任意文字列1)+"\f"+(任意文字列2)   [置換文字列]:"\1\0\2"   "改行\f文字" → "\1\0" ○A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41.mac →A:\Program Files\Uty\Hidemaru\Macro\文字改行指定41.mac ○A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41'c.mac →A:\Program Files\Uty\Hidemaru\Macro\文字改行指定41'c.mac  ・数字桁上げ   [検索文字列]:"[^0-9]\f[0-9]"+(任意文字列)+"\f" ←[0-9]は実際の桁数分                       ↑任意文字列は数字の区切り   [置換文字列]:"\0"+"0"(任意個数)+"\1"   "[^0-9]\f[0-9][0-9]\.\f" → "\000\1" ○A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41.mac →A:\Program Files\Uty\Hidemaru\Macro\改行文字指定0041.mac ○A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41'c.mac →A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41'c.mac ←対象外 ※ "改行文字指定41'c.mac"が対象外になったのは、数字の次が"."("\.")じゃ なかったから。  ・任意文字列変更   [検索文字列]:(変更前任意文字列0)+"\f.+\f"+(変更前任意文字列2)   [置換文字列]:(変更後任意文字列0)+"\1" +(変更後任意文字列2)   "^改\f.+\f定" → "かい\1てい" ○A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41.mac →A:\Program Files\Uty\Hidemaru\Macro\かい行文字指てい41.mac ○A:\Program Files\Uty\Hidemaru\Macro\改行文字指定41'c.mac →A:\Program Files\Uty\Hidemaru\Macro\かい行文字指てい41'c.mac 2.ちょっと複雑に -ファイル検索を使って-  ファイルリストを作る時、当然クリップボード経由等で取得してくれる別ソフトを 使っていると思いますが、その時、ファイル検索を有効に活用していますか?  ここでいうファイル検索はエクスプローラーの右クリックで出てくる"検索(F)"の 事です。(スタートメニューのでもいいです)  これが馬鹿にしたもんでもなく、そこそこ使えるんです。日付の設定等はちょっと (どころか相当)使いにくいですが……。  で、どう有効に使うのかと言いますと、 (1) サブフォルダの全ファイルの変名作業 C:\TEMP | +--test1 | | | +--test1-5 | | | | | +--test5.txt | | | +--test1.txt | | | +--test2.txt | +--test2 | +--test3.txt | +--test4.txt  の様なフォルダ構成の時、1つ1つのフォルダでファイルリストを取得するのでは なく、"C:\TEMP"にて[検索]を使って一気に取得します。 "C:\TEMP" 検索:条件 = すべてのファイル  [名前と場所]  ・名前 :"*.*"  ・含まれる文字列 :""  ・探す場所 :"C:\TEMP"  ・サブフォルダも探す :ON  を実行すると、 TEST1 TEST2 TEST1-5 TEST1.TXT TEST2.TXT TEST5.TXT TEST4.TXT TEST3.TXT  の様な結果になります。そこで、ファイルのみパス情報を取得します。 C:\TEMP\test2\TEST4.TXT C:\TEMP\test2\TEST3.TXT C:\TEMP\test1\test1-5\TEST5.TXT C:\TEMP\test1\TEST1.TXT C:\TEMP\test1\TEST2.TXT  これを使って変名作業をするわけです。ここで、いくつか目的以外のファイルも含 まれているかもしれません。  もし、目的ファイルの拡張子が決まっているのなら、検索時の名前 "*.*" を "*. (指定の拡張子)" にして下さい。この時、大文字小文字を気にする必要はありません (Windowsはファイルの大文字小文字を区別しない)。  基本的には、置換処理で検索を厳密にすることで、除外ファイルを省く方がラクで す。 置換処理の[その行を削除]は結構使えますよ。何しろ一カ所でもヒットする 行を丸ごと消してくれるので、[ファイル名に限定]を"OFF"にすれば、ファ イルリストをいじるだけに留まらずいろんな文書の編集にも有効です。 実際自分もいろいろ使ってます。  この技?を使えば、"サブフォルダファイル大移動"も可能です。 (2) サブフォルダファイル大移動  つまり、 ○C:\TEMP\test2\TEST4.TXT →C:\TEMP\TEST4.TXT ○C:\TEMP\test2\TEST3.TXT →C:\TEMP\TEST3.TXT ○C:\TEMP\test1\test1-5\TEST5.TXT →C:\TEMP\TEST5.TXT ○C:\TEMP\test1\TEST1.TXT →C:\TEMP\TEST1.TXT ○C:\TEMP\test1\TEST2.TXT →C:\TEMP\TEST2.TXT  の様なリストを作って[反映処理]すればいいわけです。(マクロ本体の解説「パス 部を変えると、「ファイルの移動」も同時に行います(マクロサーバの標準機能)。」 の通り、移動も出来るんです)  具体的には、[置換処理]で、 ・検索 :"([^\\]+\\)*" ・置換 :"C:\TEMP\" ・ファイル名に限定 :OFF ・正規表現 :ON  します。  もし、ファイル名が重複している場合は、マクロ添付の外部サンプルマクロ "FileNamer+4.mac"を使って、フォルダ名を臨時に追加しておくといいでしょう。 ○C:\TEMP\test2\TEST4.TXT →C:\TEMP\test2TEST4.TXT ○C:\TEMP\test2\TEST3.TXT →C:\TEMP\test2TEST3.TXT ○C:\TEMP\test1\test1-5\TEST5.TXT →C:\TEMP\test1-5TEST5.TXT ○C:\TEMP\test1\TEST1.TXT →C:\TEMP\test1TEST1.TXT ○C:\TEMP\test1\TEST2.TXT →C:\TEMP\test1TEST2.TXT  みたいに。  ちなみにこの場合、[置換処理]は、 ・検索 :"([^\\]+\\)*" ・置換 :"C:\\TEMP\\" ・ファイル名に限定 :OFF ・正規表現 :ON ・対象行 :Mark ・対象Mark :"→"  となります。(なぜこうなるのか?……説明はちょっとややこしいので割愛したい ……ことですが、えーっと、「置換処理でマーク行で正規表現の時は、真性に秀丸の 置換処理を使っている為、置換文字列もエスケープシーケンスを意識しないといけま せん」ってとこですか。(この段落を修正 (2001.08.01)) (3) 他のマクロを利用しての指定ファイル抜き出し  前項によりファイルの大移動が可能なのですが、他のマクロを一緒に使うことによっ て、指定ファイルのみを選択しての実行が簡単です。  ここからはある程度環境が限定されます。と言うか使うソフトをバッチリ指定しま す。それ以外では知りません。  ここではたった数個のファイルを対象とはしません。まず手作業でポチポチ移動さ せるのが完璧に面倒なほどの数を想定してます。しかし、例としてあげるのは無駄な ので(1)項で使ったリストを使います。 C:\TEMP | +--test1 | | | +--test1-5 | | | | | +--test5.txt | | | +--test1.txt | | | +--test2.txt | +--test2 | +--test3.txt | +--test4.txt  これらのファイルの内、"test5.txt"、"test2.txt"、"test4.txt"をCD-Rに焼きま した。(もう限定してきましたね)  当然、焼いたファイルはHDDから消え去って貰うわけですが、いちいちディスクの 中身を確認しながら、各フォルダを廻るのは面倒で仕方がありません。  そこでディスク側のファイルを「エクスプローラ拡張メニュー (c)Mt.Wide 氏」 の"ファイル名をクリップボードにコピー"-"長いファイル名"でコピーします。  この時パスは取得しません。  その方がラクだからです。違うフォルダに同名ファイルが山ほどあるっていう場合 は、この方法は適さないかも知れません。多分一度では出来ないでしょう。段階を踏 めばいいんです。兎に角コピーします。フォルダが山ほどある場合は、前述の"検索" を使ってまとめて取得した方が早いでしょう。  そうしてコピーしたファイル名リストを新規秀丸に張り付けます。 test5.txt test2.txt test4.txt  ここで1つ注意。後述のマクロは一部分でも合致するとその行をマークしてしまう ので、ファイル名先頭に"\"を追加しておくと、間違いがないでしょう。この場合、 ファイルがルートにないことが条件になります。ルートの場合は":"で。 (2001.08.13) \test5.txt \test2.txt \test4.txt  それから今度は、HDD側のファイルリストを作成します。ここで、厳密に作るのは 作業を簡易化させようという今回の意図に反します。極めていい加減にラフに作成し ます。 C:\TEMP\test2\TEST4.TXT C:\TEMP\test2\TEST3.TXT C:\TEMP\test1\test1-5\TEST5.TXT C:\TEMP\test1\TEST1.TXT C:\TEMP\test1\TEST2.TXT  ここでは、パスがいります。これも新たな新規秀丸に張り付けます。  ここまで出来たら、もう終わったも同然です。おまけページの「AKT専用マクロ」 項の「画像ファイルリスト検索マクロ(Ver1.5β1以降)」をダウンロードして使える 状態にし、CD-R側のファイルリストを張り付けた秀丸で実行します。  すると、アクティブウィンドウがHDD側のファイルリストに移って「これがファイ ルリストですね?」と聞いてきます。「はい」を選ぶと、元の秀丸に戻ってマクロの メニューが表示されます。  そこで、一番下の"リスト検索"を選びます。すると「合致で対象行の論理行頭にマー クを付加します。いいですか?」と聞いてきます。「はい」で処理が始まります。終 了するとHDD側ファイルリストが、 ●C:\TEMP\test2\TEST4.TXT C:\TEMP\test2\TEST3.TXT ●C:\TEMP\test1\test1-5\TEST5.TXT C:\TEMP\test1\TEST1.TXT ●C:\TEMP\test1\TEST2.TXT の様になります。結果が「全て一致」でマーク行のマークが各々1つづつだったら、 ここでCD-R側のファイルリストは必要なくなります。閉じちゃってください。  次にまた別の秀丸マクロが必要です。「行毎にソートする」マクロです。おまけペー ジの「ごみなマクロ」項にもソートマクロがありますが、どちらかと言えば「指定範 囲のソート for 秀丸エディタ 1997.02.28版」(reg_sort.mac)(C)中河原与太郎 氏 がお薦めです。さくっと出来ます。って今ネットでいいかげんに検索してみたら中河 原与太郎氏のページはあってもこのマクロは公開されていないみたいですね。しかも 同じ名前で別のマクロもあったし……。氏にお願いするか、別のマクロを使うか、僕 にメールを打つか、お好きな方法でどうぞ。無断で公開出来ないんで。  兎に角こうして下さい。 ●C:\TEMP\test1\TEST2.TXT ●C:\TEMP\test1\test1-5\TEST5.TXT ●C:\TEMP\test2\TEST4.TXT C:\TEMP\test1\TEST1.TXT C:\TEMP\test2\TEST3.TXT  こうすると、未マーク行の削除が簡単ですね。して下さい。 ●C:\TEMP\test1\TEST2.TXT ●C:\TEMP\test1\test1-5\TEST5.TXT ●C:\TEMP\test2\TEST4.TXT  さらに、マークを削除します。ブロック指定か置換処理か、お好きな方法で。 [置換処理] ・検索 :"^●" ・置換 :"" ・正規表現 :ON C:\TEMP\test1\TEST2.TXT C:\TEMP\test1\test1-5\TEST5.TXT C:\TEMP\test2\TEST4.TXT  ここまで来れば、もう終わったも同然で……あれ? デジャブ?……す。(2)項の 方法でファイルを移動させます。 ○C:\TEMP\test1\TEST2.TXT →C:\TEMP\TEST2.TXT ○C:\TEMP\test1\test1-5\TEST5.TXT →C:\TEMP\TEST5.TXT ○C:\TEMP\test2\TEST4 .TXT →C:\TEMP\TEST4.TXT  仮フォルダに移動したファイルをまとめて削除すればああスッキリ。という「画像 ファイルリスト検索マクロ」の宣伝でした。 3.一括-リスト変換を使って一覧編集  細かく編集したいファイル数が多いとマーク行で書き直すもの面倒です。  そこで、ファイル名リストからパス部を削除し、それをリストファイル化すると BOX編集などもできますので、結構楽になりました。  具体的には、各フォルダのファイルを一括でファイル名リストに貼付けし、そのファ イル名リストを残しつつ、別のファイルにコピペしたリストからパス部・拡張子を削 除します。 ・ファイル名リスト Z:\WINDOWS\CONTROL.EXE Z:\WINDOWS\CONTROL.INI Z:\WINDOWS\CPArcanum.ini Z:\WINDOWS\CPPoison.ini Z:\WINDOWS\brndlog.bak Z:\WINDOWS\CTL3D.DLL Z:\WINDOWS\SYSTEM\宇宙飛行.scr Z:\WINDOWS\SYSTEM\wshom.ocx Z:\WINDOWS\SYSTEM\WSHTCP.VXD Z:\WINDOWS\SYSTEM\WSIPX.VXD Z:\WINDOWS\SYSTEM\WSOCK.VXD Z:\WINDOWS\SYSTEM\WSOCK32.001 ・リストファイル上記リストをコピペし、 Z:\WINDOWS\CONTROL.EXE Z:\WINDOWS\CONTROL.INI Z:\WINDOWS\CPArcanum.ini Z:\WINDOWS\CPPoison.ini Z:\WINDOWS\brndlog.bak Z:\WINDOWS\CTL3D.DLL Z:\WINDOWS\SYSTEM\宇宙飛行.scr Z:\WINDOWS\SYSTEM\wshom.ocx Z:\WINDOWS\SYSTEM\WSHTCP.VXD Z:\WINDOWS\SYSTEM\WSIPX.VXD Z:\WINDOWS\SYSTEM\WSOCK.VXD Z:\WINDOWS\SYSTEM\WSOCK32.001  "[^\\/:\*?<>\|]*[\\/:\*?<>\|]+}+"を""(無文字)で正規表現"ON"で置き換えると、 CONTROL.EXE CONTROL.INI CPArcanum.ini CPPoison.ini brndlog.bak CTL3D.DLL 宇宙飛行.scr wshom.ocx WSHTCP.VXD WSIPX.VXD WSOCK.VXD WSOCK32.001  となってパス部が削除されます。(置換文字は一例で、厳密なドライブ確認はして ませんので、注意してください)  用途によっては、拡張子も削除した方がいいかもしれません。  "\.[0-z]*$"を""(無文字)で正規表現"ON"で置き換えると、 CONTROL CONTROL CPArcanum CPPoison brndlog CTL3D 宇宙飛行 wshom WSHTCP WSIPX WSOCK WSOCK32  となりますので、リストファイルとして編集・保存してください。  今回の手順のミソは、ファイル名リストからリストファイルを作ることで、並び順 を揃えていることです。  [置換処理]の"NoMark行をそのまま複写"もコンセプトは同じなんです。  [一括変換]-【リスト】-リストファイル"抽出"ボタン押下にて、同等動作するよう にしました。(Ver2.5) (1999.08.27) - とりあえず、作り始めた。 (1999.08.30) - 1-(2)-"任意位置文字列削除"追加。 (1999.09.08) - 1-(2)-"数字桁上げ"追加。 (1999.09.17) - 1-(2)-"任意文字列変更"追加し、他の項目名も簡素化。 (2001.07.02) - 第2章を第2項まで追加。 (2001.08.01) - 2-(2)をNo.振り忘れていたのと「ファイル編集マクロ Ver2.2」改訂 による解説修正。 (2001.08.05) - 2-(3)追加。 (2001.08.13) - 2-(3)で解説追加(ディスク側リスト、検索ミス対策)。 (2015.09.03) - 目次および、第3章を追加。(夜)一部記載変更。 Written by AKT (akt@to.club.ne.jp)