パスワードを忘れた? アカウント作成
215547 journal

C0FFEEの日記: (メモ)(WSH)ファイルのプロパティを取得する

日記 by C0FFEE

ファイルのプロパティには

  • 構造化ストレージのメインストレージ情報
  • 構造化ストレージのサブストレージ情報
  • ファイル形式毎のメタ情報

が存在して云々。

■要件
・カレントフォルダ以下に存在するdocとxlsのプロパティを取得したい
・ライセンス必要なMS Officeはインストール不可、MSの外部DLL程度なら導入可能

■サンプルコード(JScript)

var DSO = WScript.CreateObject("DSOFile.OleDocumentProperties");
 
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var fld = fso.GetFolder(".");
 
var sa = WScript.CreateObject("Shell.Application");
var fldPath = sa.Namespace(fld.Path);
var fldItem = fldPath.Items();
 
    for(var i = 0; i < fldItem.Count; i++){
        if(!fldItem.Item(i).IsFolder){
 
            var prop="";
            try{
                DSO.Open(fldItem.Item(i).Path,true,0);
                prop = DSO.SummaryProperties.Author;
                prop += ","+DSO.SummaryProperties.ByteCount;
                prop += ","+DSO.SummaryProperties.CharacterCount;
                prop += ","+DSO.SummaryProperties.CharacterCountWithSpaces;
                prop += ","+DSO.SummaryProperties.Comments;
                prop += ","+DSO.SummaryProperties.Company;
                prop += ","+DSO.SummaryProperties.DateCreated;
                prop += ","+DSO.SummaryProperties.DateLastSaved;
                prop += ","+DSO.SummaryProperties.LastSavedBy;
                prop += ","+DSO.SummaryProperties.DateLastPrinted;
                prop += ","+DSO.SummaryProperties.TotalEditTime;
                prop += ","+DSO.SummaryProperties.LineCount;
                prop += ","+DSO.SummaryProperties.PageCount;
                prop += ","+DSO.SummaryProperties.ParagraphCount;
                prop += ","+DSO.SummaryProperties.SlideCount;
                prop += ","+DSO.SummaryProperties.NoteCount;
                prop += ","+DSO.SummaryProperties.HiddenSlideCount;
                prop += ","+DSO.SummaryProperties.MultimediaClipCount;
                prop += ","+DSO.SummaryProperties.Manager;
                prop += ","+DSO.SummaryProperties.Thumbnail;
                prop += ","+DSO.SummaryProperties.SharedDocument;
                prop += ","+DSO.SummaryProperties.DigitalSignature;
                prop += ","+DSO.SummaryProperties.DocumentSecurity;
                prop += ","+DSO.SummaryProperties.ApplicationName;
                prop += ","+DSO.SummaryProperties.PresentationFormat;
                prop += ","+DSO.SummaryProperties.RevisionNumber;
                prop += ","+DSO.SummaryProperties.Category;
                prop += ","+DSO.SummaryProperties.Subject;
                prop += ","+DSO.SummaryProperties.Title;
                prop += ","+DSO.SummaryProperties.WordCount;
                //CustomDocumentProperties("任意")での取得は省略
                DSO.Close();
                WScript.Echo(fldItem.Item(i) + "\n" + prop);
            }catch(e){
                WScript.Echo(fldItem.Item(i) + " : ERROR");
            }
 
            var fileProp="";
            //ループ回してるのはOS環境によって格納されてる位置が異なるため
            for(x=0;x<100;x++){
                if(fldPath.GetDetailsOf(fldItem.Item(i), x) != ""){
                fileProp+= x+":"+fldPath.GetDetailsOf(fldItem.Item(i), x) + "\n";
                }
            }
            WScript.Echo(fileProp);
        }
    }

あとは、パラメータを渡すようにしたりサブフォルダ以下を辿るようにしたり、結果を外部ファイルに書き出したりなどの処理を付け足して使う。

■注意
・Windows 2000は環境によってdllが二つほど必要になる可能性がある。
 具体的にはdsofile.dllgdiplus.dllの2つ。
 XP以降でもdsofile.dllは必要になる。

■参考URL
816_FileProperty
ブックのドキュメントプロパティを操作する
MP3の「曲の長さ」を調べる

この議論は、C0FFEE (36377)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

アレゲは一日にしてならず -- アレゲ見習い

読み込み中...