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

マークアイテムを個別に圧縮

Paper Plane xUI

複数あるファイルやフォルダを、それぞれ個別に圧縮したいと思ったので。

これはスクリプトなしでもできました。ユーザー保存用データ『_User』便利です。

f:id:k9q:20130719092856p:plain

A_exec    = {	; エイリアス
winrar	= #38:\WinRAR\WinRAR.exe
}
M_xzip	= {
zip(Lv&0)	= %u7-ZIP64.DLL,a -tzip -mx=0 %ef"%{%|%*name(DCPN,%2)%|%X.zip%}" %@ %S"-r"%:%k"^CTRL"
zip(Lv&5)	= %u7-ZIP64.DLL,a -tzip -mx=1 %ef"%{%|%*name(DCPN,%2)%|%X.zip%}" %@ %S"-r"%:%k"^CTRL"
rar(Lv&3)rr3%%	= winrar a -m3 -rr3p "%{%|%*name(DCPN,%2)%|%X.rar%}" %@*%FDC%:%k"^CTRL"
--	= 
個別圧縮 zip(Lv&1)	= *ifmatch /^$/,%*getcust(_User:TargetDir)%:%"出力フォルダ"*setcust _User:TargetDir=%{%|Z:\%|%}
	%"個別圧縮 zip(Lv1)"%Q"%*name(DCPN,%*getcust(_User:TargetDir),Z:\)%X.zip"
	%u7-ZIP64.DLL,a -tzip -mx=1 %ef"%*name(DCPN,%*getcust(_User:TargetDir),Z:\)%X.zip" %FDC %S"-r"
	%k"^CTRL"
個別圧縮 &7z(MAX)	= *ifmatch /^$/,%*getcust(_User:TargetDir)%:%"出力フォルダ"*setcust _User:TargetDir=%{%|Z:\%|%}
	%"個別圧縮 7z(MAX)"%Q"%*name(DCPN,%*getcust(_User:TargetDir),Z:\)%X.7z"
	%u7-ZIP64.DLL,a -t7z -mx=9 %ef"%*name(DCPN,%*getcust(_User:TargetDir),Z:\)%X.7z" %FDC %S"-r"
	%k"^CTRL"
個別圧縮 &rar(MAX)rr3%%	= *ifmatch /^$/,%*getcust(_User:TargetDir)%:%"出力フォルダ"*setcust _User:TargetDir=%{%|Z:\%|%}
	%"個別圧縮 rar(rr3%-MAX)"%Q"%*name(DCPN,%*getcust(_User:TargetDir),Z:\)%X.rar"
	*ifmatch /^[a-zA-Z]:\\.+$/,%*name(DCPN,%*getcust(_User:TargetDir),Z:\)%:*makedir %*name(DCPN,%*getcust(_User:TargetDir),Z:\)
	winrar a -ibck -m5 -rr3p "%*name(DCPN,%*getcust(_User:TargetDir),Z:\)%X.rar" %FDC
--	= 
出力先フォルダのリセット = *setcust_User:TargetDir=
}
KC_main	= {	; PPcメイン窓
LOADEVENT	,*setcust _User:TargetDir=
^P	,%M_xzip,5
}

Ctrl+Pの押下で圧縮用のメニュー。選択すると出力先フォルダを問われるので、パスを入力。

私は基本的にRAMディスク(Z:\ドライブ)を一時作業用として常用しているので、デフォルトのターゲットはZ:\です。適当に書き換えて下さい。

出力フォルダは_User:TargetDir に保存して、LOADEVENTでリセット。

ほとんどウェイト無しで圧縮ソフトに送られるので、数千ファイルとかマークしてた場合は酷いことになります。

7-ZIPは自動でひとつずつ圧縮してくれるようですが、WinRARは設定から《他のWinRARが処理中のときは待機(W)》にチェックを入れないと待機しません。

%k"^CTRL" で、Ctrl+Ctrlという無意味なキーエミュレートを行なってますが、これはPPcへのフォーカス移動が目的です。

7-ZIP64.DLLの圧縮窓が開いた後に%k(入力キーは何でもいい)を実行すると、確実にPPcにフォーカスが移動します。*focus C でのフォーカス移動だと時々失敗するので、%kを用いることにしました。