#PPx 5MB以上か、フォルダならFastCopyで移動

今まではカーソルエントリかマークエントリの合計が5MB50MB以上か、フォルダがあるなら、*ppcfileバーストモードを使っていたんですが、FastCopyに任せることにしました。

外部アプリに任せて、ファイル操作中のPPcを操作できるようにしたかったので。

KC_main = { 
C    ,*script %0s\C_FastCopy.js
M    ,*script %0s\M_FastCopy.js
}
==C_fastcopy.js==
//!*script
var size = PPx.EntryMarkSize + PPx.EntrySize * (PPx.EntryMarkCount == 0);
var fastcopy = size > 5242880;

var items = new Enumerator( PPx.Entry );
if ( !fastcopy ) {
for ( ; !items.atEnd() ; items.moveNext() ) {
if( items.item().Attributes & 16 ) {
fastcopy = true;
break;
}
}
}

if ( PPx.Extract('%n').slice(1).charCodeAt(0)<67 ) {
if ( PPx.Extract('%N~') ) {
var path = "%*name(DXP,%~FD)"
} else {
var path = "%*name(DXP,%1)"
}
}else{
var path = "%*name(DXP,%M?ppclist)"
}

if( fastcopy ) {
PPx.Execute('FastCopy /cmd=update /no_exec /estimate /auto_close /bufsize=256 /error_stop /to=' + path + ' /srcfile=%a*8FDC');
} else {
PPx.Execute('*ppcfile copy,' + path );
}
==M_fastcopy.js==
//!*script
var size = PPx.EntryMarkSize + PPx.EntrySize * (PPx.EntryMarkCount == 0);
var fastcopy = size > 5242880;

var items = new Enumerator( PPx.Entry );
if ( !fastcopy ) {
for ( ; !items.atEnd() ; items.moveNext() ) {
if( items.item().Attributes & 16 ) {
fastcopy = true;
break;
}
}
}

if ( PPx.Extract('%n').slice(1).charCodeAt(0)<67 ) {
if ( PPx.Extract('%N~') ) {
var path = "%*name(DXP,%~FD)"
} else {
var path = "%*name(DXP,%1)"
}
}else{
var path = "%*name(DXP,%M?ppclist)"
}

if( fastcopy ) {
PPx.Execute('FastCopy /cmd=move /no_exec /estimate /auto_close /bufsize=256 /error_stop /to=' + path + ' /srcfile=%a*8FDC');
} else {
PPx.Execute('*ppcfile move,' + path );
}