「あの処理」までのVBScript (その3) 指定ファイルの指定プロパティを抜き出し Echo する。
の「指定ファイル」を「指定フォルダ」にした劣化版? です。
とは言え、ちょいと改造してやれば、特定形式のファイルのみ情報を取り出すよう変更できます。
'以下、末尾までスクリプト
'
'実行例:Cscript ShowFileDetailsInFolder006.vbs パス名"
'
'処理概要
' 指定フォルダ内のアイテムのプロパティ情報を抜き出し Echo する。
'
Option Explicit
Dim oAgs
Dim oSFso
Set oAgs = WScript.Arguments
Set oSFso = WScript.CreateObject("Scripting.FileSystemObject")
'パラメータ数チェック
If oAgs.count = 1 Then
'引数のフォルダ存在チェック
If oSFso.FolderExists(oAgs.item(0)) = True Then
'メインルーチン呼び出し
SHOW_FileDetails(oAgs.item(0))
Else
Wscript.Echo oAgs.item(0) & vbTab & "引数が不正です。フォルダが存在しません"
End if
Else
Wscript.Echo oAgs.item(0) & vbTab & "引数が不正です。実行例:Cscript ShowFileDetailsInFolder006.vbs パス名"
End If
'終了処理
Set oAgs = Nothing
Set oSFso = Nothing
Wscript.Quit
'メインルーチン
'sFolder 情報取得する存在するフォルダ名
'
Sub SHOW_FileDetails(sFolder)
Const PARA_COUNT = 512
Dim rHeaders(512)
Dim oShellA
Dim oNsFolder
Dim oItem
Dim iFileCount
Dim iPara
Dim idxN ' 名前
Dim idxS ' サイズ
Dim idxB ' 分類
Dim idxL ' 長さ
Dim idxH ' フレーム高
Dim idxW ' フレーム幅
Set oShellA = WScript.CreateObject("Shell.Application")
'指定フォルダのNamespace取得
Set oNsFolder = oShellA.Namespace(sFolder)
'詳細ラベルの判定初期化
idxN = 0 ' 名前
idxS = 0 ' サイズ
idxB = 0 ' 分類
idxL = 0 ' 長さ
idxH = 0 ' フレーム高
idxW = 0 ' フレーム幅
'詳細ラベルの取得
For iPara = 0 to (PARA_COUNT-1)
rHeaders(iPara) = oNsFolder.GetDetailsOf(oNsFolder.Items, iPara)
Select Case oNsFolder.GetDetailsOf(oNsFolder.Items, iPara)
case "名前"
idxN = iPara
case "サイズ"
idxS = iPara
case "分類"
idxB = iPara
case "長さ"
idxL = iPara
case "フレーム高"
idxH = iPara
case "フレーム幅"
idxW = iPara
end select
'名前以外判定
If idxS > 0 and idxB > 0 and idxL > 0 and idxH > 0 and idxW > 0 then
Exit For
End if
Next
'処理件数カウント初期化
iFileCount = 0
'名前以外判定
If idxS > 0 and idxB > 0 and idxL > 0 and idxH > 0 and idxW > 0 then
'詳細情報の取得 PARA_COUNT まで検索して保管情報を抜き出す
For Each oItem in oNsFolder.Items
iFileCount = iFileCount + 1
Wscript.Echo iFileCount & ")--------------------"
Wscript.Echo idxN & ")" & rHeaders(idxN) & ": " & oNsFolder.GetDetailsOf(oItem, idxN)
Wscript.Echo idxS & ")" & rHeaders(idxS) & ": " & oNsFolder.GetDetailsOf(oItem, idxS)
Wscript.Echo idxB & ")" & rHeaders(idxB) & ": " & oNsFolder.GetDetailsOf(oItem, idxB)
Wscript.Echo idxL & ")" & rHeaders(idxL) & ": " & oNsFolder.GetDetailsOf(oItem, idxL)
Wscript.Echo idxH & ")" & rHeaders(idxH) & ": " & oNsFolder.GetDetailsOf(oItem, idxH)
Wscript.Echo idxW & ")" & rHeaders(idxW) & ": " & oNsFolder.GetDetailsOf(oItem, idxW)
Wscript.Echo ""
Next
End if
Wscript.Echo iFileCount & "件 詳細表示完了"
'終了処理
Set oShellA = Nothing
Set oNsFolder = Nothing
Set oItem = Nothing
End Sub
0 件のコメント:
コメントを投稿