|
http://hide.maruo.co.jp/lib/macro/dividefile.html
上記サイトのマクロで、
【2.行頭の特定の文字列や符号を指標にして分割する】を使っています。
マクロ自動分割した後の分割ファイル名の後尾に _1 _20 などのナンバリン
グが付加されてしまいます。
自動分割後、先頭の1行目の文字列をまるごとファイル名として使用して保存したい
のですが、どのようにすれば良いでしょうか?
下記の【changenameマクロ】を応用することで、良いマクロができあがらないでしょ
うか?
何卒よろしくお願い申し上げます。
■■■■■■■■■■■■■■■■■■■■■■■■■
$ext = ".txt"; // 拡張子の指定
#n = 1; // 取得行の指定
movetolineno 0, #n;
changename gettext2( 0, #n, linelen2, #n ) + $ext;
SAVEAS;
endmacro;
■■■■■■■■■■■■■■■■■■■■■■■■■
//--------- DivideFile.mac --------------------------------------//
// ファイルを均等あるいは特定文字を基準にして分割するマクロ Ver1.00
// 山紫水明
#nextline = 0; //指標文字列の次の行を区切りにするときは 1
#bx = x; #by = y;
goscreentop;
menu "&1 均等分割(論理行で計算)",
"&2 均等分割(表示行で計算)",
"&3 行頭の特定文字・記号を指標にする";
#begin = tickcount;
#c = result;
if( #c < 1 ) goto End;
#handle = hidemaruhandle( 0 );
$base = leftstr( basename2, strlen(basename) - strlen(filetype) );
disabledraw;
$ext = filetype;
if( #c == 1 ) #linenum = linecount2;
else if( #c == 2 ) #linenum = linecount;
else goto MojiBunkatu;
#ime = imestate;
if( #ime ) imeswitch;
#divide = val( input( "分割数は?") );
if( #ime ) imeswitch;
if( #divide < 2 ) endmacro;
if( #divide > #linenum ) {
message "分割できません";
endmacro;
}
#unit = #linenum / #divide;
gofiletop;
disableinvert;
#i = 1;
while( #i <= #divide ) {
while( code == 0x0d ) down;//空行はスキップ
beginsel;
if( #i == #divide ) gofileend;
else {
if( #c == 1 ) movetolineno 1, #unit * #i + 1;
else {
moveto 0, #unit * #i - 1;
if( code != 0x0d ) movetolineno 1, lineno + 1;
}
}
call CopyPaste;
title str(#i) + " / " + str(#divide);
#i = #i + 1;
}
goto End;
MojiBunkatu:
$sign = input("行頭の区切り文字・記号は?(複数文字,正規表現も可)");
if( $sign == "" ) endmacro;
gofiletop;
disableinvert;
#i = 1;
while( 1 ) {
beginsel;
searchdown "^" + $sign, regular;
if( !result ) {
gofileend;
#stop = 1;
}
if( #nextline ) movetolineno 1, lineno + 1;
call CopyPaste;
#i = #i + 1;
if( #stop ) break;
title str(#i);
}
End:
moveto #bx, #by;
if( #c < 1 ) endmacro;
#time = tickcount - #begin;
if( #none ) {
#i = #i - 1;
closehidemaruforced #nullhandle;
message "行数と行の状態の関係で最後のファイルが空になりました。";
}
message str( #i - 1 ) + " 個に分割しました。\n所要時間:" + str( #time / 1000 )
+ " 秒" + str( #time % 1000 );
endmacro;
CopyPaste:
copy;
openfile "/h";
paste;
gofileend;
if( x == 0 && y == 0 ) {
#none = 1;
#nullhandle = hidemaruhandle(0);
}
if( !#none ) saveas $base + "_" + str( #i ) + $ext;
if( #c == 3 && #nextline == 0 ) gofiletop;
setactivehidemaru #handle;
return;
//--------------------------------------------------//
■■■■■■■■■■■■■■■■■■■■■■■■■
|
|