PPx 逆にchopdirするスクリプト

*chopdir path ディレクトリの階層を減らす
X_arcdr=2のときにPPx内部で使用するコマンドです。
指定したpathの直下にディレクトリが1つしかないときは、そのディレクトリを一つ上に移動させて、pathを削除します。
PPx help

PPxコマンドの*chopdirは、指定したpathの直下のフォルダをひとつ上に引き上げますが、その逆(?)に直下のフォルダの中身をひとつ上に引き上げて、空になったフォルダは削除する。

f:id:k9q:20131128033816p:plain

KC_main    = {	; PPcメイン窓
E	,*script %0s\chopdir.js
}
==chopdir.js==
//!*script
var f     	= PPx.Extract('%C');
var path	= PPx.Extract('%*name(CDN,"%R","%1")');
// ディレクトリでなければ終了
if(PPx.GetFileInformation(path)!=":DIR"||(f=='..'||f=='.'||f=='')){PPx.Quit();}

// フォルダを読む
var fso		= new ActiveXObject("Scripting.FileSystemObject");
var objFolder	= fso.GetFolder(path);
var count	= objFolder.Files.Count;
var subFolder	= objFolder.SubFolders.Count;

// 中のファイルとフォルダ数をメッセージ表示
if(count+subFolder == 0){
	PPx.SetPopLineMessage(f+': 空のディレクトリです');
	PPx.Quit();
}else if(subFolder){
	var m = '';
	var e = new Enumerator(objFolder.SubFolders);
	for(i=5;i--&&!e.atEnd();){
		if(i){
			m = m + ', "' + e.item().Name + '"';
			e.moveNext();
		}else{
			m = m + ', "' + e.item().Name + '"';
			e.moveNext();
			if(!e.atEnd()){
				m = m + '...';
			}
		}
	}
	PPx.SetPopLineMessage(f+': '+count+'ファイル / '+subFolder+'フォルダ' + m)
}else{
	PPx.SetPopLineMessage(f+': '+count+'ファイル / '+subFolder+'フォルダ')
}
// 実行するか尋ねる
if(count==0&&subFolder==1){
	var path2 = e.item(e.moveFirst()).Path;
	// chopdirする
	if(!PPx.Execute('%QN"*chopdirしますか : '+ PPx.Extract('%*name(CN,"'+path2+'")') +'"')){
		PPx.Execute('*chopdir %R')
		PPx.Quit();
	// chopdirとは逆に下のフォルダの中身を1階層引き上げる
	}else if(!PPx.Execute('%QN"逆chopdirしますか : '+ PPx.Extract('%*name(CN,"'+path+'")') +'"')){
		PPx.Execute('*file !move /min /qstart /src:"'+path2+'\\" /dest:"'+path+'"');
		PPx.Quit();
	}
}
PPx.Quit();