#8162
takuya
参加者

なかかな面白そうなマクロだったので。
ポップアップメニューに対応させました。

でも出来ればExplorer拡張がいいなぁ。。。

同じ階層のファイルを開くマクロ
2009-10-07 4:37 一部ミスを修正

//2009-10-07 4:37:
//設定
//false:同じ階層のファイル全てを開く
//true:アクティブなファイルと同じ拡張子を開く
var SHOW_ONLY_SAME_EXT=true;
//ファイルを開く前に確認画面を出す
var SHOW_CONFIRM=true

main();

///////以下ライブラリ
function OpenSameFolderFile(flag,flag2){
this.SHOW_ONLY_SAME_EXT=flag
this.SHOW_CONFIRM=flag2
this.fso = new ActiveXObject(“Scripting.FileSystemObject”);
this.file_names_in_same_dir=function( filter ){
filter = filter ? filter : new RegExp(‘/*/’);
var list=[]
for (var e=new Enumerator(this.fso.GetFolder(document.Path).Files);!e.atEnd();e.moveNext()){
var name = e.item().name
if(name.match(filter)){
list.push(name)
}
}
return list;
}
this.extention=function(){
var ext = this.fso.GetExtensionName(document.FullName)
return ext;
}
this.opened_filenames=function(){
var opened_files =[]
for (var e=new Enumerator( editor.Documents);!e.atEnd();e.moveNext()){
opened_files.push(e.item().Name);
}
return opened_files;
}
//不要なモノをのぞいたファイル名一覧
this.file_names=function(filter){
var list = []
var ret_val = []
filter = filter ? filter: new RegExp(‘.’+this.extention()+’$’,’g’ )
var opened = this.opened_filenames()
for( var s in arr=this.file_names_in_same_dir(filter)){
var is_opend=false
for ( var i in opened ){
if ( arr[s] == opened ){is_opend=true};
}
if(is_opend)continue;
ret_val.push( arr[s])
}
ret_val.sort
return ret_val;
}
this.show_main_menu=function(){
var main_menu= CreatePopupMenu()
var all_file_menu = CreatePopupMenu()
var filter = this.SHOW_ONLY_SAME_EXT ? false:”.*”
var list = this.file_names(filter)
if(list.length==0){
main_menu.Add( “対象ファイルがありません”, -1);
main_menu.Track()
return;
}
for ( var i in list){
all_file_menu.Add( list
, parseInt(i)+1)
}
main_menu.Add( “次を開く(&N)”, -1);
main_menu.Add( “前を開く(&P)”, -2 );
main_menu.Add( “全てを開く(&A)”, -3);
main_menu.AddPopup( “同階層ファイル一覧”, all_file_menu );
ret =main_menu.Track(0)
if(ret!=0){
selected = []
if(ret == -1)selected.push(list.shift());
if(ret == -2)selected.push(list.pop());
if(ret == -3)selected=list;
if(ret > 0) selected.push(list[ret-1])
for( i in selected){
var ans=true;
if(this.SHOW_CONFIRM) ans=confirm(selected
+”を開きますか?n(この確認は設定で消すことが出来ます)”);
if(ans){
editor.NewFile()
editor.OpenFile(selected
,eeOpenAllowNewWindow)
}
}
}
}
}
function main(){
obj = new OpenSameFolderFile(SHOW_ONLY_SAME_EXT,SHOW_CONFIRM);
obj.show_main_menu()
}