100以上のファイルに一括置換したいNo.08711
Papageno さん 01/05/19 06:51
 
あるお客様でシステムの再構築のためTableや列名をきちんとした
ネイミングで作り直す必要に迫られています。

C:\usr\keiri\*.sql などとフルパスで指定した複数のファイル
に対して

あらかじめ用意した置換用の設定

TABLE01   → SHAIN
TABLE02   → TOKUISAKI
TABLE03   → ZAIKO
COLUMN001 → SHAINNO
COLUMN002 → TOKUISAKICD
COLUMN003 → ZAIKOSU
etc.etc.

により一括置換するような方法はあるでしょうか?

置換対象のファイルは100個以上あって、
置換ウィンドウで[次の秀丸も続けて置換]では
対応しきれません。

[ ]
RE:08711 100以上のファイルに一括置換しNo.08712
yamasan さん 01/05/19 09:33
 
yamadaです。こんにちは。

>により一括置換するような方法はあるでしょうか?
>
>置換対象のファイルは100個以上あって、
>置換ウィンドウで[次の秀丸も続けて置換]では
>対応しきれません。

マクロ会議室で、
 02003 01/04/20 20:55  RE:02001 置換について  
 02008 01/04/21 13:47  RE:02005 置換について  

で、山紫水明さんが、
作られたマクロがあります。
私が、質問した内容に、お答えいただいたのですが、
そのマクロの置換の部分を書き換えれば、可能と思います。

私は、200ほどのファイルについて、
一括で、置換できました。私の想像が外れていなければ、
出来ると思います。

[ ]
RE:08712 100以上のファイルに一括置換しNo.08713
Papageno さん 01/05/19 09:52
 
yamadaさん、こんにちは。

>マクロ会議室で、
>02003 01/04/20 20:55  RE:02001 置換について  
>02008 01/04/21 13:47  RE:02005 置換について  
>
>で、山紫水明さんが、
>作られたマクロがあります。

ありがとうございます。
早速調べます。
やっぱり、秀丸エディタは偉大ですね。

[ ]
RE:08711 100以上のファイルに一括置換しNo.08714
TAKA さん 01/05/19 13:54
 
TAKA です。

>により一括置換するような方法はあるでしょうか?

すでに別の方からコメントがあるようですが、以下のような定義を
してよいなら可能です。
2つを置換する場合の例を書いておきます。
「ReplaceCnt」の数と、「[Replace0_?]」の「?」の部分を必要な
だけ定義すればいいだけです。

正規表現を使用したい場合は、「Regular」を「1」に換えて下さい。
#今回は、使わないと思いますが。

// iniファイルの定義(ここから)
[ReplaceMain]
FileCnt=1
Hide=1

[Replace0]
File=C:\usr\keiri\*.sql
Sub=0
ReplaceCnt=2

[Replace0_0]
Before="TABLE01"
After="SHAIN"
Word=0
Casesense=0
Regular=0
Fuzzy=0

[Replace0_1]
Before="TABLE02"
After="TOKUISAKI"
Word=0
Casesense=0
Regular=0
Fuzzy=0
// iniファイルの定義(ここまで)

こんなので、よければ、
http://www.infomadonna.ne.jp/~takata/hm/repall1.lzh
をダウンロードして使って下さい。
その中の、「RepAll.mac」がマクロで、「RepAll.txt」がドキュメ
ントです。
マクロ実行時には、フォルダごとバックアップを取って実行するこ
とをお勧めします。

[ ]
RE:08713 100以上のファイルに一括置換しNo.08716
山紫水明 さん 01/05/19 17:11
 
 Papagenoさん,yamadaさん、こんにちは。

》早速調べます。

 その後うまくいきましたか?
 念のため補足しておきます。私のマクロなら,

grep ".+", "*.*", ".", regular, icon, filelist;
の部分を
grep ".+", "C:\\usr\\keiri\\*.sql", ".", regular, icon, filelist;

最後の方
replaceallfast "^(From|To:<E-mail>|X-Priority:|Status:).+\\n", "", regular;
を,
replaceallfast "TABLE01", "SHAIN";
replaceallfast "TABLE02", "TOKUISAKI";
replaceallfast "TABLE03", "ZAIKO";
というように必要なだけ書き並べていただければいいと思います。

     では, (^^)/~
                                        山紫水明

[ ]
RE:08716 100以上のファイルに一括置換しNo.08731
yamasan さん 01/05/20 11:34
 
山紫水明 さん、こんにちは。yamadaです。
指名をしてしまって、申し訳なかったです。(^○^)

Papagenoさんからの、レスが無いのに、何ですが、
関連で、私から質問させてください。
マクロ会議室で無いのに、マクロの話で恐縮ですが、
このコメントの関連で質問させていただきます。

 | grep ".+", "*.*", ".", regular, icon, filelist;
 | の部分を
 | grep ".+", "C:\\usr\\keiri\\*.sql", ".", regular, icon, filelist;

マクロでgrepを実行するというのが、良く分かっていないので、
お聞きしたいのです。
今、問題にしている山紫水明 さんに教えていただいたマクロを
少なからず、使わせて頂いております。有難うございます。

さて、例えば、
d:\yamadaというフォルダ内に、
001.htm〜100.htmという具合に、100のファイルがあった場合、

私は、
grep ".+", "*.*", ".", regular, icon, filelist;
を利用するときに、
その実行したい対象フォルダの一つのファイルを開いて、マクロを実行してます。

つまり、d:\yamada\001.htmを秀丸で開いた後に、マクロを実行しています。
これでいいのですか?
--------------
もう一つあるのですけれど、
[パス]を指定できるようですが、
そうしますと、サブフォルダまで、含めて、指定できますか?

上手く説明できないですが、
対象ファイルを
dir "d:\yamada" /s /b > all_htm.txt
として、リダイレクトされたファイルにしたい、というような事なのです。

繰り返しますが、
サブフォルダを含めて、grepをマクロで指定できるのでしょうか?
その場合は、grep ".+", "*.*", "."の
"*.*"をどう書き換えたらいいですか?

便乗質問で恐縮なんですが、お教えください。
いい知恵が浮かんできませんので、お願いします。

[ ]
RE:08731 100以上のファイルに一括置換しNo.08732
TAKA さん 01/05/20 12:03
 
TAKA です。
山紫水明さんより先に、この発言を見つけたので、レスをつけます。


>grep ".+", "*.*", ".", regular, icon, filelist;
>を利用するときに、
>その実行したい対象フォルダの一つのファイルを開いて、マクロを実行してます。
>
>つまり、d:\yamada\001.htmを秀丸で開いた後に、マクロを実行しています。
>これでいいのですか?

"."の意味がカレントフォルダという意味になりますので、あって
います。安心して使って良いです。
"*.*"の指定をフルパスにした場合は、"."が意味をなさなくなるだ
けです。


>そうしますと、サブフォルダまで、含めて、指定できますか?

「subdir」というオプションがありますので、
grep ".+", "*.*", ".", regular, subdir, icon, filelist;
とすれば、良いです。

#私のマクロでは、INIファイルの「Sub」で設定出来るようになっ
 ています。


山紫水明さんへ
本当は、置換対象ファイルへの移動をタグジャンプで実現しようと
思っていたのですが、ステルスモードで実行するオプション(Hide)
をONにした時に、タグジャンプした際に一瞬だけ秀丸が表示され
られてしまいエレガントではなかったので、山紫水明さんのマクロ
で採用していたgrepから行番号を取り除いてgettextで取り込み後、
openfileするというアイデアを使わせてもらいました。
movetolineno 1, ##I + 1;
##YS = y;
golineend2;
$$Str = gettext( 0, ##YS, x, y );
のように、折り返しもOKにしました。
事後報告となってしまいましたが、他の人のマクロを見ることは非
常に参考になります。ありがとうございました。

[ ]
RE:08732 100以上のファイルに一括置換しNo.08733
yamasan さん 01/05/20 12:20
 
yamadaです。TAKAさん、有難うございました。

 | 「subdir」というオプションがありますので、
 | grep ".+", "*.*", ".", regular, subdir, icon, filelist;
 | とすれば、良いです。
 |
 | #私のマクロでは、INIファイルの「Sub」で設定出来るようになっ
 |  ています。

やはり、何とか、なるのですね。
助かります。

TAKAさんのマクロも、やってみます。
有難うございました。大変、作業が便利になって、
驚いている、yamadaでした。(~_~)

[ ]
RE:08716 100以上のファイルに一括置換しNo.08815
Papageno さん 01/05/25 07:20
 
山紫水明さん、こんにちは。

> その後うまくいきましたか?
> 念のため補足しておきます。私のマクロなら,

山紫水明さんのこの発言でマクロを直して、2ファイルを
テストしたっだけですが、うまく変換できました。

今度の職場はインターネットに常時接続できないので
返事が遅れました。ありがとうございます。

[ ]