指定した文字列の挿入No.03531
sylpheed さん 03/01/16 22:36
 
任意のフォルダにある複数のファイル(例えば、「*.txt」のようにワイルドカード
を使うなど)を指定して、任意の行に指定した文字列を一括挿入する方法はあります
か?

[ ]
RE:03531 指定した文字列の挿入No.03532
sylpheed さん 03/01/16 23:09
 
>任意のフォルダにある複数のファイル(例えば、「*.txt」のようにワイルドカード
>を使うなど)を指定して、任意の行に指定した文字列を一括挿入する方法はありま
>すか?

文字列挿入の例ですが、
aaaa
bbbb
となっている時に
ccccc  <-  挿入する文字列
aaaaa
bbbbb
としたり、
aaaaa
bbbbb
ccccc  <-  挿入する文字列
というように、自分で挿入する行数を指定したい(例:1行目や3行目というような感
じ)のですが、いまいちわかりませんでした。

[ ]
RE:03531 指定した文字列の挿入No.03534
山紫水明 さん 03/01/17 21:04
 
 sylpheedさん,こんばんは。

》任意のフォルダにある複数のファイル(例えば、「*.txt」のようにワイルド
》カードを使うなど)を指定して、任意の行に指定した文字列を一括挿入する方法
》はありますか?

 たとえば次のようなマクロではどうでしょうか?

//------------------------------------------------//
//  複数ファイルの指定行に指定文字列を挿入するマクロ
//  目的のファイルの一つを開いて実行

$s = input( "挿入文字列は?" );
#ime = imestate;
if( #ime ) imeswitch;
#line = val( input( "挿入する行は" ) );
$ext = input( "ファイルの拡張子は", ".txt" );
$file0 = filename;
#handle0 = hidemaruhandle( 0 );
grep ".", "*" + $ext, directory, regular, filelist;
replaceallfast "\\(1\\)\\n", "\\n", regular;
#handle_g = hidemaruhandle( 0 );
#c = linecount2 - 1;
gofiletop;
while( #i < #c ) {
    golinetop2;
    beginsel;
    golineend2;
    $f = gettext( seltopx, seltopy, selendx, selendy );
    if( #i ) openfile $f;
    else setactivehidemaru #handle0;
    #handle1 = hidemaruhandle( 0 );
    movetolineno 1, #line;
    insert $s + "\n";
    #i = #i + 1;
    question "保存しますか?";
    if( result ) save;
    setactivehidemaru #handle_g;
    closehidemaruforced #handle1;
    movetolineno 1, lineno + 1;
}
openfile $file0;
closehidemaruforced #handle_g;
endmacro;
//------------------------------------------------//

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

[ ]
RE:03534 指定した文字列の挿入No.03535
sylpheed さん 03/01/17 21:44
 
> sylpheedさん,こんばんは。
>
>》任意のフォルダにある複数のファイル(例えば、「*.txt」のようにワイルド
>》カードを使うなど)を指定して、任意の行に指定した文字列を一括挿入する方法
>》はありますか?
>
> たとえば次のようなマクロではどうでしょうか?
>
>//------------------------------------------------//
>//  複数ファイルの指定行に指定文字列を挿入するマクロ
>//  目的のファイルの一つを開いて実行
>
>$s = input( "挿入文字列は?" );
>#ime = imestate;
>if( #ime ) imeswitch;
>#line = val( input( "挿入する行は" ) );
>$ext = input( "ファイルの拡張子は", ".txt" );
>$file0 = filename;
>#handle0 = hidemaruhandle( 0 );
>grep ".", "*" + $ext, directory, regular, filelist;
>replaceallfast "\\(1\\)\\n", "\\n", regular;
>#handle_g = hidemaruhandle( 0 );
>#c = linecount2 - 1;
>gofiletop;
>while( #i < #c ) {
>    golinetop2;
>    beginsel;
>    golineend2;
>    $f = gettext( seltopx, seltopy, selendx, selendy );
>    if( #i ) openfile $f;
>    else setactivehidemaru #handle0;
>    #handle1 = hidemaruhandle( 0 );
>    movetolineno 1, #line;
>    insert $s + "\n";
>    #i = #i + 1;
>    question "保存しますか?";
>    if( result ) save;
>    setactivehidemaru #handle_g;
>    closehidemaruforced #handle1;
>    movetolineno 1, lineno + 1;
>}
>openfile $file0;
>closehidemaruforced #handle_g;
>endmacro;
>//------------------------------------------------//
>
>     では, (^^)/~
>                                        山紫水明
山紫水明さん、ありがとうございます。

ファイルの拡張子のところなんですが、フォルダ(パス)も指定して実行という場合
はどうすればよいでしょうか?

あとできれば、最初にマクロを実行するか否か聞くようになるといいのですが・・・。

すいません、このあたりも教えていただけると助かります。

[ ]
RE:03535 指定した文字列の挿入No.03536
山紫水明 さん 03/01/17 22:39
 
 sylpheedさん,こんばんは。

》ファイルの拡張子のところなんですが、フォルダ(パス)も指定して実行という
》場合はどうすればよいでしょうか?
》あとできれば、最初にマクロを実行するか否か聞くようになるといいのですが

 次のではどうでしょう。

#それから,相手の引用は必要最小限にしましょう。読みづらいし,サーバに余分
 な負担をかけます。

//------------------------------------------------//
//  複数ファイルの指定行に指定文字列を挿入するマクロ
//  目的のファイルの一つを開いて実行

question "挿入マクロを実行しますか?";
if( result == no ) endmacro;
$s = input( "挿入文字列は?" );
if( $s == "" ) endmacro;
#ime = imestate;
if( #ime ) imeswitch;
#line = val( input( "挿入する行は" ) );
$folder = input( "指定フォルダは", directory );
$ext = input( "ファイルの拡張子は", ".txt" );
$file0 = filename;
#handle0 = hidemaruhandle( 0 );
grep ".", "*" + $ext, $folder, regular, filelist;
replaceallfast "\\(1\\)\\n", "\\n", regular;
#handle_g = hidemaruhandle( 0 );
#c = linecount2 - 1;
gofiletop;
while( #i < #c ) {
    golinetop2;
    beginsel;
    golineend2;
    $f = gettext( seltopx, seltopy, selendx, selendy );
    openfile $folder + "\\" + $f;
    #handle1 = hidemaruhandle( 0 );
    movetolineno 1, #line;
    insert $s + "\n";
    question "保存しますか?";
    if( result ) save;
    #i = #i + 1;
    setactivehidemaru #handle_g;
    closehidemaruforced #handle1;
    movetolineno 1, lineno + 1;
}
openfile $file0;
closehidemaruforced #handle_g;
if( #ime ) imeswitch;
endmacro;
//------------------------------------------------//

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

[ ]
RE:03536 指定した文字列の挿入No.03537
sylpheed さん 03/01/19 01:29
 
山紫水明さん、こんばんは。

>    question "保存しますか?";
>    if( result ) save;

終了条件の部分ですが、saveだと更新したファイルをひとつずつ保存していたので全
保存終了させたいと思い、マクロヘルプにある「saveall(全保存
)」や「saveexitall(全保存終了)」に変えてみたんですがうまくいきませんでした。

何か別の方法でないと、いけないんでしょうか?


[ ]
RE:03537 指定した文字列の挿入No.03538
山紫水明 さん 03/01/19 20:38
 
 sylpheedさん,こんばんは。

》何か別の方法でないと、いけないんでしょうか?

 そうですね。他の方法が必要です。
 1回も確認なしでよろしいですか? それとも,最初だけは確認して,後は全部確
認なしという方がいいですか?

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

[ ]
RE:03538 指定した文字列の挿入No.03539
sylpheed さん 03/01/19 21:49
 
山紫水明さん、こんばんは。

>
> そうですね。他の方法が必要です。
> 1回も確認なしでよろしいですか? それとも,最初だけは確認して,後は全部確
>認なしという方がいいですか?
>
できれば、保存のところで最初に「保存しますか?」で確認して「yes」で保存、「n
o」で保存しないというのが理想です。

何度もお手数をおかけしますが、よろしくお願いします。

[ ]
RE:03539 指定した文字列の挿入No.03540
山紫水明 さん 03/01/19 22:03
 
 sylpheedさん,こんばんは。

》できれば、保存のところで最初に「保存しますか?」で確認して「yes」で保存、
》「no」で保存しないというのが理想です。

 次のでどうでしょう。

//------------------------------------------------//
//  複数ファイルの指定行に指定文字列を挿入するマクロ
//  目的のファイルの一つを開いて実行

question "挿入マクロを実行しますか?";
if( result == no ) endmacro;
$s = input( "挿入文字列は?" );
if( $s == "" ) endmacro;
#ime = imestate;
if( #ime ) imeswitch;
#line = val( input( "挿入する行は" ) );
$folder = input( "指定フォルダは", directory );
$ext = input( "ファイルの拡張子は", ".txt" );
$file0 = filename;
#handle0 = hidemaruhandle( 0 );
grep ".", "*" + $ext, $folder, regular, filelist;
replaceallfast "\\(1\\)\\n", "\\n", regular;
#handle_g = hidemaruhandle( 0 );
#c = linecount2 - 1;
gofiletop;
while( #i < #c ) {
    golinetop2;
    beginsel;
    golineend2;
    $f = gettext( seltopx, seltopy, selendx, selendy );
    openfile $folder + "\\" + $f;
    #handle1 = hidemaruhandle( 0 );
    movetolineno 1, #line;
    insert $s + "\n";
    if( #i == 0 ) {
        question "すべて保存しますか?";
        if( result ) save;
        else break;
    } else save;
    #i = #i + 1;
    setactivehidemaru #handle_g;
    closehidemaruforced #handle1;
    movetolineno 1, lineno + 1;
}
openfile $file0;
closehidemaruforced #handle_g;
if( #ime ) imeswitch;
message "終わりました。\n" + str(#i) + " 個のファイルを処理しました。";
endmacro;
//------------------------------------------------//

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

[ ]
RE:03540 指定した文字列の挿入No.03542
sylpheed さん 03/01/20 00:39
 
山紫水明さん、色々とありがとうございました。

本当に助かりました。


[ ]