ファイルのプロパティ

提供: MeryWiki
移動先: 案内検索

アクティブなドキュメントのプロパティを表示します。


Mery で表示する[編集]

  • 確認ダイアログ(OK/キャンセル)に表示し、親フォルダを開く
  • 警告メッセージボックス上に表示する
  • アウトプットバーに表示する

※警告とアウトプットはソースコード内でコメントアウトしてあります。


#title = "ファイルのプロパティ"
#tooltip = "ファイルのプロパティを表示し、親フォルダを開く"

/**
 * ファイルのプロパティを表示し、親フォルダを開く
 */
var path = document.FullName;
if ( ! path ) {
  Status = " ドキュメントが保存されていません";
}
else {
  var fso = new ActiveXObject( "Scripting.FileSystemObject" );
  var f = fso.GetFile( path );
  var n = "\n";
  var tab = "\t";
  var d = path + n;
  var folder = path.slice( 0, - document.Name.length ) + n;
  var file = document.Name + n;
  var t = "種類:" + tab + f.Type + n;
  var s = "サイズ:" + tab
        + f.Size.toString().replace( /(\d)(?=(?:\d{3})+$)/g ,"$1," )
        + " バイト" + n;
  var c = "作成日時:" + tab + DateTime( f.DateCreated ) + tab + n;
  var m = "更新日時:" + tab + DateTime( f.DateLastModified ) + n;
  // インデックス属性と暗号化属性は取得できない
  var fa = f.Attributes;
  var rhsac = ( fa & 1 ? "R" : "" )		// 読み取り専用属性
            + ( fa & 2 ? "H" : "" )		// 隠し属性
            + ( fa & 4 ? "S" : "" )		// システム属性
            + ( fa & 32 ? "A" : "" )	// アーカイブ属性
            + ( fa & 128 ? "C" : "" );	// 圧縮属性
  var a = "属性:" + tab + ( rhsac.length ? rhsac : 0 ) + n;
  var q = n + "フォルダを開きますか?";

  // ※確認ダイアログに表示する
  // フォルダを開きますか? → [OK] なら親フォルダを開く
  if ( Confirm( folder + file + n + t + s + c + m + a + q ) )
    new ActiveXObject( "WScript.Shell" ).Run( 'explorer /select, "' + path + '"' );

  // ※メッセージボックス(警告ダイアログ)に表示する
  // Alert( folder + file + n + t + s + c + m + a );

  // ※アウトプットバーに表示する
  // OutputBar.Writeln( d + s + c + m );
}

/**
 * 日時を  "YYYY/MM/DD hh:mm:ss"  で返す
 */
function DateTime( date ) {
  var dd = new Date( date );
  // 1ケタの数字をゼロ埋めして2ケタで返す
  var pad = function( str ) {
    return str.replace( /[0-9]+/g , function( $0 ) {
      return $0.length < 2 ? "0" + $0 : $0;
  } ) }
  return dd.getFullYear() + "/" + pad( ( dd.getMonth() + 1 ) + "/" + dd.getDate() ) +" " 
       + dd.toLocaleTimeString();
}

プロパティダイアログを開く[編集]

表示されるまでにちょっとタイムラグがありますが、エクスプローラの 本物の プロパティダイアログを呼び出します。
※動作確認は Windows XP でしかしていません。


#title = "ファイルのプロパティ"
#tooltip = "ファイルのプロパティダイアログを表示する"

/**
 * ファイルのプロパティダイアログを開く
 */
var path = document.FullName;
var filename = document.Name;
if ( ! path ) {
  Status = " ドキュメントが保存されていません";
}
else {
  var shell = new ActiveXObject( "Shell.Application" );
  shell.NameSpace( path.slice( 0, - filename.length ) )
       .ParseName( filename )
       .InvokeVerb( "プロパティ(&R)" );
// "プロパティ(&R)" の部分はエクスプローラの右クリックメニューのとおりの文字列にし、アクセラレータのアルファベットの前に & をつける
}


1行ですませるなら

if (document.Name) new ActiveXObject("Shell.Application").NameSpace(document.FullName.slice(0,-document.Name.length)).ParseName(document.Name).InvokeVerb("プロパティ(&R)");
スポンサーリンク