GREP一括置換についてNo.05013
乱土 労馬 さん 00/02/20 22:20
 

 Tomoyuki Takahashiさん作のマクロ、GreNRep.mac、あるいはおーなーしぇふさん作の
マクロ、Z_grep.macを使用して、GREPで抽出した文字列を一括置換して元のファイルに
書き戻す、という作業をときどきやることがあるのですが、Ver3.03までは問題なく
使うことのできたマクロがVer3.05になってうまく作動しなくなりました。

 具体的には、どうもマクロが置換した文字列を書き戻しにいくときに、
\パス名\ファイル名を開くべきところを、\パス名\ファイル名\パス名\ファイル名
という名前のファイルを探しに行き、結果、目的のファイルが見つからずにエラーを
出して終了する、という現象が起きているように思います(GreNRep.macでのエラー
メッセージはそうなっているようにみえました)。

 WindowsNT4 SP6aを使用しています。

[ ]
RE:05013 GREP一括置換についてNo.05032
秀丸担当 さん 00/02/21 15:51
 
> Tomoyuki Takahashiさん作のマクロ、GreNRep.mac、あるいはおーなーし
>ぇふさん作のマクロ、Z_grep.macを使用して、GREPで抽出した文字列を一括
>置換して元のファイルに書き戻す、という作業をときどきやることがあるの
>ですが、Ver3.03までは問題なく使うことのできたマクロがVer3.05になって
>うまく作動しなくなりました。

これはもしかしたら前にも報告があったV3.05で秀丸のアクティブ切り替え
をするマクロがうまく動かないという報告に関連しているかもしれません。
調べます。

[ ]
RE:05032 GREP一括置換についてNo.05034
乱土 労馬 さん 00/02/21 16:15
 

>これはもしかしたら前にも報告があったV3.05で秀丸のアクティブ切り替え
>をするマクロがうまく動かないという報告に関連しているかもしれません。
>調べます。

 不思議なことにWin98ではGreNRep.macはちゃんと動くようですね。
Z_grepのほうは、各ドライブのルートから実行するとうまくいくけど、
カレントと検索先が違うディレクトリだとうまくいかないみたいです。

[ ]
RE:05034 GREP一括置換についてNo.05039
秀丸担当 さん 00/02/21 17:12
 
> 不思議なことにWin98ではGreNRep.macはちゃんと動くようですね。
>Z_grepのほうは、各ドライブのルートから実行するとうまくいくけど、
>カレントと検索先が違うディレクトリだとうまくいかないみたいです。

Z_grepのほうは試してみたのですがうまく動きました。
カレントと検索先が違っていても動きました。
GrepNRepは、どこにあるのでしょうか。探してみたのですが見つかり
ませんでした。
マクロの互換ができていないとしたら、早く直したいです。
あと、grepに新しく追加された「ファイル名をフルパスで出力」は
関係していませんか?

[ ]
RE:05039 GREP一括置換についてNo.05045
乱土 労馬 さん 00/02/21 19:01
 

>Z_grepのほうは試してみたのですがうまく動きました。
>カレントと検索先が違っていても動きました。
>GrepNRepは、どこにあるのでしょうか。探してみたのですが見つかり
>ませんでした。

 あらら、ここか秀まるおさんのページで知ったサイトだったんですが(^^;)。
http://www.venus.dti.ne.jp/~takatomo/menu.html
POISON BUTTERFLYというサイトです

>マクロの互換ができていないとしたら、早く直したいです。
>あと、grepに新しく追加された「ファイル名をフルパスで出力」は
>関係していませんか?

 で、少し念入りに実験してみました(仕事しろよ<オレ)

 まずZ_GREPですが、

 カレントが別の時、「ファイル名をフルパス出力」にチェックが入って
いるとまったく置換しません。フルパス出力しないにしていると、
「カレントフォルダの移動に失敗しました」というメッセージがでまくります。

 GrepNRepのほうは、

 フルパス出力にチェックが入っているとカレントフォルダの移動に失敗
のメッセージがでます。このとき、d:\aaa\bbb\ccc.htmというファイルが
目標なのですが、d:\aaa\d:aaa\bbb\ccc.htmというファイルを探しに行って
いるようです。なぜかこちらはフルパス出力しない時はうまく動いてくれ
ます。不思議だ(^^;)。

 なお、GrepNRepはJISでファイルをセーブするように決め打ちしてます。
もちろん一連の作業で対象になるのはJISコードで書かれたファイルです。

[ ]
RE:05045 GREP一括置換についてNo.05058
秀丸担当 さん 00/02/22 15:22
 
> あらら、ここか秀まるおさんのページで知ったサイトだったんですが(^^;)。
>http://www.venus.dti.ne.jp/~takatomo/menu.html
>POISON BUTTERFLYというサイトです

入手できました。リンクのページにあったのですね。

> まずZ_GREPですが、
>
> カレントが別の時、「ファイル名をフルパス出力」にチェックが入って
>いるとまったく置換しません。フルパス出力しないにしていると、
>「カレントフォルダの移動に失敗しました」というメッセージがでまくります。

こちらの環境では、「ファイル名をフルパス出力」が有効でも無効でも、
成功しました。
カレントフォルダと検索先のフォルダが違うと起きるということですが、
実際はどのようなフォルダでしょうか。具体的に教えてください。

> GrepNRepのほうは、
>
> フルパス出力にチェックが入っているとカレントフォルダの移動に失敗
>のメッセージがでます。このとき、d:\aaa\bbb\ccc.htmというファイルが
>目標なのですが、d:\aaa\d:aaa\bbb\ccc.htmというファイルを探しに行って
>いるようです。なぜかこちらはフルパス出力しない時はうまく動いてくれ
>ます。不思議だ(^^;)。

GrepNRepは、「ファイル名をフルパス出力」が有効の場合、同様の問題
が起きました。
これは、マクロの作り上、こうなることは仕方ないです。
「ファイル名をフルパス出力」を無効にするか、フルパスにも対応できる
ようにマクロを修正していただくしかありません。

[ ]
RE:05058 GREP一括置換についてNo.05126
乱土 労馬 さん 00/02/27 13:55
 

 仕事が押してて検証が遅れてしまってすみませんでした。

>こちらの環境では、「ファイル名をフルパス出力」が有効でも無効でも、
>成功しました。
>カレントフォルダと検索先のフォルダが違うと起きるということですが、
>実際はどのようなフォルダでしょうか。具体的に教えてください。

 試してみたのですが、やはりZ_GREPはこちらではうまく行きませんでした。
Dドライブのルートにあるテキストファイルを開いた状態でZ_GREPを実行し、検索先を
E:\aaaというディレクトリ以下のHTMLファイルにしてやってみたところ………。

 「フルパス出力が有効」の場合、置換もせずに終了、無効の場合はカレントフォル
ダへの
移動に失敗、というメッセージが表示されます。Z_GREPでは置換したことになってい
ますが、
目標のファイルには結果は反映されていません。

 GrepNRepのほうは

>GrepNRepは、「ファイル名をフルパス出力」が有効の場合、同様の問題
>が起きました。
>これは、マクロの作り上、こうなることは仕方ないです。
>「ファイル名をフルパス出力」を無効にするか、フルパスにも対応できる
>ようにマクロを修正していただくしかありません。

 おっしゃるとおりです。実用上は問題ないのでこちらを使えばおっけー、てことに
なるんですが。


[ ]
RE:05126 GREP一括置換についてNo.05146
秀丸担当 さん 00/02/28 16:50
 
> 試してみたのですが、やはりZ_GREPはこちらではうまく行きませんでした。
>Dドライブのルートにあるテキストファイルを開いた状態でZ_GREPを実行し、
>検索先をE:\aaaというディレクトリ以下のHTMLファイルにしてやってみたと
>ころ………。

むう、そうですか。もう一度同じ環境を想定してやってみたのですが、問題は
起きませんでした。
もしかしてZ_GREPのバージョンが違うとか?私が手に入れたものはVer1.0
(1999/3/4)のものです。

[ ]
RE:05146 げげ(^^;)No.05153
乱土 労馬 さん 00/02/28 17:04
 
>もしかしてZ_GREPのバージョンが違うとか?私が手に入れたものはVer1.0
>(1999/3/4)のものです。

 ぎょ。実はこの件も気になって、確認取ろうと思ってた矢先なんですよね。
んがしかしそちらのほうが古いとは思わなかった(爆)。

 こちらで使っているのはVer2.0(1999/4)だったりします。

 むう、古い方に戻して実験してみようかな。

[ ]
RE:05153 げげ(^^;)No.05181
秀丸担当 さん 00/02/29 19:01
 
> ぎょ。実はこの件も気になって、確認取ろうと思ってた矢先なんですよね。
>んがしかしそちらのほうが古いとは思わなかった(爆)。
>
> こちらで使っているのはVer2.0(1999/4)だったりします。
>
> むう、古い方に戻して実験してみようかな。

そうだったのですか。バージョンが2つあるとは気付きませんでした。
Ver2.0を試してみました。

「ファイル名をフルパスで出力」が有効のときは、言われるとおり、何も置換
されませんでした。
無効のときは、フォルダの移動に失敗のメッセージはでませんが、内部では
フォルダの移動に失敗している様子で、検索元のフォルダを参照しようとして、
「−は空なので削除されます」のメッセージがなぜか出る、という現象が確認
できました。
しかしv3.01でも同様の現象になりました。うーん..

[ ]
RE:05181 げげ(^^;)No.05185
乱土 労馬 さん 00/02/29 22:59
 

>「ファイル名をフルパスで出力」が有効のときは、言われるとおり、何も置換
>されませんでした。
>無効のときは、フォルダの移動に失敗のメッセージはでませんが、内部では
>フォルダの移動に失敗している様子で、検索元のフォルダを参照しようとして、
>「−は空なので削除されます」のメッセージがなぜか出る、という現象が確認
>できました。

 ではこれは作者さんに直接対策してもらったほうがいい話題なのですね。
こちらから問い合わせてみることにします。

>しかしv3.01でも同様の現象になりました。うーん..

 これは理由は簡単で、3.01ではJISコードで書かれたファイルはGREPしても
無駄だったので、使ってなかったからですね。気付かなかったのも道理ってワケで(^^;)

[ ]
RE:05185 げげ(^^;)No.05201
秀丸担当 さん 00/03/01 19:23
 
> これは理由は簡単で、3.01ではJISコードで書かれたファイルはGREPしても
>無駄だったので、使ってなかったからですね。気付かなかったのも道理ってワケで
>(^^;)

なるほど、違いはそこだったのですね。
レベルダウンではないようでよかったです。

[ ]