2017年04月25日

ファイルの所有者情報を取得&集計するVBScript

応援クリックを1日1回宜しくお願いいたします。



フォルダのパスをコピーして貼り付けると、フォルダ内のファイルの「所有者」情報を取得して、所有者ごとに件数を出すVBScriptを紹介します。

VBScriptのファイル作成方法
  1. メモ帳を起動して、ソースコードを書く。
  2. 保存時に、拡張子を「.vbs」にする。
  3. 保存したvbsファイルをダブルクリックすると、起動します。









本記事のVBScriptのソースコード
Option Explicit
Dim s,t,f,h,g,p,d,n,e
Set s=WScript.CreateObject("Scripting.FileSystemObject")
Set t=s.OpenTextFile("所有者情報.csv",2,true,-1)
p=InputBox("パスを入力してください。"&vbLf&"例) C:\Users"&vbLf&vbLf&"フォルダには調査対象のファイルのみいれてください。")
if p="" Then WScript.Quit
if right(p,1)<>"\" Then p=p&"\"
Set g=s.GetFolder(p)
Set d=CreateObject("Scripting.Dictionary")
For Each f In g.Files
h=f.ParentFolder
Set g=CreateObject("Shell.Application").Namespace(h)
n=g.GetDetailsOf(g.Items.Item(s.GetFileName(p&f.Name)),10)
If d.Exists(n) Then
d(n)=d(n)+1
else
d.Add n,1
End If
Next
t.WriteLine "所有者"&vbTab&"ファイル数"
for each n in d
t.WriteLine n&vbTab&d(n)
Next
t.Close
Set e=CreateObject("Excel.Application")
e.Application.Visible=true
e.Application.Workbooks.Open(s.getParentFolderName(WScript.ScriptFullName)&"\所有者情報.csv")

本記事のソースコードの一部解説
  • .GetDetailsOfメソッドの2つ目の引数に「10」を指定することで、ファイルの詳細情報(名前、日付時刻、種類、サイズ、など)のうち、「所有者」を取得します。
  • 変数dは連想配列で、所有者を文字列として取得した後に、その文字列をKeyとし、件数をValueとして、件数をカウントしています。
  • 結果をcsvファイルに保存するので、文字列と文字列の間にタブ(vbTab)を入れることで、異なるセルに入力するようにしています。



所有者以外の情報も取得する

このブログに行き着いた方はご存知かも知れませんが、Windowsで割り当てられている.GetDetailsOfメソッドの引数の番号のリストのページを紹介します。

GetDetailsOf メソッドでファイルのプロパティ項目名リストを書き出しします... - palm84.com

そして、このリンク内にあるWindows10の完全リストはこちら。

Windows 10 Pro Insider Preview





posted by Line Segment at 18:00 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック