の1ファイル限定版です。(その1)の引数はフォルダ名でしたが、今回はパスファイル名となっています。
実行例:
Cscript Show1FileDetails002.vbs パスファイル名
Cscript Show1FileDetails002.vbs パスファイル名 > 002.txt
で、Windows指定ファイルの「プロパティ情報」を抜き出して画面に表示します。 リダイレクトとかでファイルへの出力も出来ます。
処理について:
前回のコードがパス名だけの処理でしたが、今回は引数がパスファイル名という事で、パスファイル名をフォルダ名とファイル名に分離する処理を追加して出力時に同一ファイル名チェックしてecho出力しています。
NamespaceのItem直接指定って出来ねーのかなー?
次回は、指定パラメータのみ出力ってとこかー でもコレ。チョット問題が、、、。
'以下、末尾までスクリプトです。 ではまた~ノシ
'
'実行例:Cscript Show1FileDetails002.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.FileExists(oAgs.item(0)) = True Then
'メインルーチン呼び出し
SHOW_1FileDetails(oAgs.item(0))
Else
Wscript.Echo oAgs.item(0) & vbTab & "引数が不正です。ファイルが存在しません"
End if
Else
Wscript.Echo oAgs.item(0) & vbTab & "引数が不正です。実行例:Cscript Show1FileDetails002.vbs パスファイル名"
End If
'終了処理
Set oAgs = Nothing
Set oSFso = Nothing
Wscript.Quit
'メインルーチン
'sPathName 情報取得する存在するパスファイル名
'
Sub SHOW_1FileDetails(sPathName)'****引数はパスファイル名
Const PARA_COUNT = 512
Dim rHeaders(512)
Dim oShellA
Dim oNsFolder
Dim oItem
Dim iFileCount
Dim iPara
'++stパス名から フォルダ名とファイル名を抽出
Dim oPath
Dim sFolder
Dim s1File
'指定ファイルオブジェクト取得
Set oPath = oSFso.GetFile(sPathName)
'ファイル名取得
s1File = CStr(oPath.Name)
'フォルダ名取得
sFolder = CStr(oPath.ParentFolder)
'++ed
Set oShellA = WScript.CreateObject("Shell.Application")
'指定フォルダのNamespace取得
Set oNsFolder = oShellA.Namespace(sFolder)
'詳細ラベルの取得
For iPara = 0 to (PARA_COUNT-1)
rHeaders(iPara) = oNsFolder.GetDetailsOf(oNsFolder.Items, iPara)
Next
'処理件数カウント初期化
iFileCount = 0
'詳細情報の取得 PARA_COUNT まで検索して保管情報を抜き出す
For Each oItem in oNsFolder.Items
if oItem = s1File then '++stアイテム名一致の判定
iFileCount = iFileCount + 1
Wscript.Echo iFileCount & ")--------------------"
For iPara = 0 to (PARA_COUNT-1)
'情報格納分のみラベルと詳細情報の表示
If oNsFolder.GetDetailsOf(oItem, iPara) <> "" Then
Wscript.Echo iPara & vbtab & rHeaders(iPara) & ": " & oNsFolder.GetDetailsOf(oItem, iPara)
End If
Next
Wscript.Echo ""
End if '++ed
Next
Wscript.Echo iFileCount & "件 詳細表示完了"
'終了処理
Set oShellA = Nothing
Set oNsFolder = Nothing
Set oItem = Nothing
Set oPath = Nothing
End Sub
'実行例:Cscript Show1FileDetails002.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.FileExists(oAgs.item(0)) = True Then
'メインルーチン呼び出し
SHOW_1FileDetails(oAgs.item(0))
Else
Wscript.Echo oAgs.item(0) & vbTab & "引数が不正です。ファイルが存在しません"
End if
Else
Wscript.Echo oAgs.item(0) & vbTab & "引数が不正です。実行例:Cscript Show1FileDetails002.vbs パスファイル名"
End If
'終了処理
Set oAgs = Nothing
Set oSFso = Nothing
Wscript.Quit
'メインルーチン
'sPathName 情報取得する存在するパスファイル名
'
Sub SHOW_1FileDetails(sPathName)'****引数はパスファイル名
Const PARA_COUNT = 512
Dim rHeaders(512)
Dim oShellA
Dim oNsFolder
Dim oItem
Dim iFileCount
Dim iPara
'++stパス名から フォルダ名とファイル名を抽出
Dim oPath
Dim sFolder
Dim s1File
'指定ファイルオブジェクト取得
Set oPath = oSFso.GetFile(sPathName)
'ファイル名取得
s1File = CStr(oPath.Name)
'フォルダ名取得
sFolder = CStr(oPath.ParentFolder)
'++ed
Set oShellA = WScript.CreateObject("Shell.Application")
'指定フォルダのNamespace取得
Set oNsFolder = oShellA.Namespace(sFolder)
'詳細ラベルの取得
For iPara = 0 to (PARA_COUNT-1)
rHeaders(iPara) = oNsFolder.GetDetailsOf(oNsFolder.Items, iPara)
Next
'処理件数カウント初期化
iFileCount = 0
'詳細情報の取得 PARA_COUNT まで検索して保管情報を抜き出す
For Each oItem in oNsFolder.Items
if oItem = s1File then '++stアイテム名一致の判定
iFileCount = iFileCount + 1
Wscript.Echo iFileCount & ")--------------------"
For iPara = 0 to (PARA_COUNT-1)
'情報格納分のみラベルと詳細情報の表示
If oNsFolder.GetDetailsOf(oItem, iPara) <> "" Then
Wscript.Echo iPara & vbtab & rHeaders(iPara) & ": " & oNsFolder.GetDetailsOf(oItem, iPara)
End If
Next
Wscript.Echo ""
End if '++ed
Next
Wscript.Echo iFileCount & "件 詳細表示完了"
'終了処理
Set oShellA = Nothing
Set oNsFolder = Nothing
Set oItem = Nothing
Set oPath = Nothing
End Sub
0 件のコメント:
コメントを投稿