読者です 読者をやめる 読者になる 読者になる

PPxでファイルパスをコピーするスクリプト

Paper Plane xUI

^[C]クリップボードにクリップでも出来るのですが、エントリ自体がクリップボードに格納されてしまうので、テキストのみをスクリプトでクリップします。

マークエントリが複数ある場合は、レスポンスファイルを読み込んで、最終行の改行を削除しているだけです。

f:id:k9q:20131004165412p:plainf:id:k9q:20131004165414p:plain

KC_main = { 
^C    ,%M_ClipPath,P
}
M_ClipPath    = {	** comment **
エントリのコピー(&C)	= %K"@^C"
--	= 
ファイルネームのコピー	= *script %0s\ClipPath.js,%a*8FXN,%%X,ファイルネーム
拡張子付きファイルネームのコピー	= *script %0s\ClipPath.js,%a*8FCN,%%C,拡張子付きファイルネーム
--	= 
ファイルパスのコピー(&P)	= *script %0s\ClipPath.js,%a*8FDC,%%FDC,パス
}
==ClipPath.js==
//!*script
//引数1 : レスポンスファイル %a*8F**
//引数2 : パス生成 %F**
//引数3 : 何をコピーしたか
if(PPx.Arguments.Length!=3){PPx.Quit();}
var clippedtext = '';
var ResFile    = PPx.Arguments.Item(0);
var type	= PPx.Arguments.item(1);
var clipped	= PPx.Arguments.item(2);
if(!PPx.EntryMarkCount){
	PPx.Execute('*cliptext ' + type);
	clippedtext = PPx.Extract('%*clippedtext()');
}else{
	var str		= new ActiveXObject('ADODB.Stream');
	str.type = 2;
	str.charset = 'UTF-8';
	str.open();
	str.loadFromFile(ResFile);
	// 最終行の改行を削除する
	PPx.Clipboard = str.readText().replace(/\r?\n$/g, "");
	str.close();
	str = '';
	clippedtext = PPx.EntryMarkCount + 'エントリの ' + clipped + ' をコピーしました';
}
PPx.SetPopLineMessage('Clip: ' + clippedtext);
PPx.Quit();