|
クリップボードで取り込んだ配列の末尾の改行コードが邪魔してるようですね。
最後の要素だけは改行コードが無くてうまく動作するということじゃないでしょうか。
一度別のマクロに書き出して調べてみて気付きました。
//===touch.mac===
$s=@"loaddll ""DengakuDLL.dll"";
if( !result ) {
message ""DengakuDLL.dllのロードに失敗しました。"";
endmacro;}
";
openfile "";insert $s;saveas currentmacrodirectory+ "\\tmp.mac",sjis;
beginclipboardread; //データの取り込みを宣言
#i = 0 ;
$a[#i] = getclipboard();
while( $a[#i] != "" ) { //データがなくなるまで繰り返す
#sr0 = strstr($a[#i],"\\2",0) + 1 ; //1行目行頭から"\2"までの文字数取得。
$sr0 = midstr($a[#i],#sr0,4) ; //年の4桁を変数$sr0に入れる
$sr1 = midstr($a[#i],#sr0 + 4,2) ; //月の2桁を変数$sr1に入れる
$sr2 = midstr($a[#i],#sr0 + 6,2) ; //日の2桁を変数$sr2に入れる
$sr3 = $sr0 + "/" + $sr1 + "/" + $sr2 ; //合成して 2023/03/12 になるように
する
$opt1 = "/t " + $sr3 + "#00:00:00 " + $a[#i]; //時分秒はゼロに
insert "#n = dllfunc(\"TOUCH\", @\""+ $opt1 +"\");\n";
#i = #i + 1 ;
$a[#i] = getclipboard() ; //次のファイルへ
}
replaceallfast "txt\n","txt";save;
//#hwnd=hidemaruhandle(0);setactivehidemaru 1;
//closehidemaruforced #hwnd;
execmacro currentmacrodirectory+ "\\tmp.mac";
endmacro;
//===touch.mac===
自分なら秀丸マクロより rubyでバッチファイルをつくりたいケースで、これだと処
理したいフォルダに放り込んでダブルクリックで処理できます。
===touch.bat===
rem touch
ruby -x "%~f0"
goto end
#!ruby
$stderr=open("tmp.txt","w")
require 'fileutils'
Dir.glob('*.txt'){|e|
if /^(\d{4})(\d{2})(\d{2})/=~e
y,m,d=$1.to_i,$2.to_i,$3.to_i
FileUtils.touch(e, mtime: Time.local(y,m,d))
end
}
__END__
:end
===touch.bat===
|
|