C0FFEEの日記: (メモ)(WSH)ファイルのプロパティを取得する
ファイルのプロパティには
- 構造化ストレージのメインストレージ情報
- 構造化ストレージのサブストレージ情報
- ファイル形式毎のメタ情報
が存在して云々。
■要件
・カレントフォルダ以下に存在する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.dll、gdiplus.dllの2つ。
XP以降でもdsofile.dllは必要になる。
(メモ)(WSH)ファイルのプロパティを取得する More ログイン