VBSでフォルダ内のファイル数カウント
手作業でやるのも大変なので必要に迫られて
VBScriptで指定フォルダ内のファイル数をカウントするスクリプトを
作ってみました。
指定したフォルダ内のファイル数をカウントして
"フルパスフォルダ名","ファイル数"という形式でファイル出力するという
ほんまに超単純な機能を持つスクリプトです。スピードは3,000ファイル処理で30秒と
実用にはやや厳しいかもしれないです。出力したファイルはEXCELで加工
*たぶんファイル書き込みの前の条件判定とループのダブルミックスで重いのかも
知れないですね・・・。
保存されているファイルの先頭にはyyyymmddと日付がついているので
日付毎のファイル数の推移を見れば月毎の繁閑を見ることができるんですが
それは別の機会に・・・。
VBScriptで指定フォルダ内のファイル数をカウントするスクリプトを
作ってみました。
指定したフォルダ内のファイル数をカウントして
"フルパスフォルダ名","ファイル数"という形式でファイル出力するという
ほんまに超単純な機能を持つスクリプトです。スピードは3,000ファイル処理で30秒と
実用にはやや厳しいかもしれないです。出力したファイルはEXCELで加工
*たぶんファイル書き込みの前の条件判定とループのダブルミックスで重いのかも
知れないですね・・・。
保存されているファイルの先頭にはyyyymmddと日付がついているので
日付毎のファイル数の推移を見れば月毎の繁閑を見ることができるんですが
それは別の機会に・・・。
’指定フォルダ内のファイル数をカウントしてログファイルに出力
Set fso = CreateObject("Scripting.FileSystemObject")
Private Const TARGETFOLDER = "分析パス指定" 'カウント対象パス
Private Const OUTFILENAME = "ログファイル名" '出力ログ
Call Main()
WScript.Quit 0
Sub Main()
Dim objFS, objFolder
Dim strm, dest
Set objFS = CreateObject("Scripting.FileSystemObject")
' 出力ログのストリームを生成
dest = objFS.BuildPath( GetScriptPath(objFS), OUTFILENAME )
Set strm = objFS.CreateTextFile( dest )
' ファイルをリストアップ
Set objFolder = objFS.GetFolder( TARGETFOLDER )
Call WriteFilePathAll(objFolder, strm)
strm.Close
WScript.Echo( "OK" )
End Sub
'フォルダパスの取得
Sub WriteFilePathAll(ByVal objFolder, ByVal strm)
Dim subfolders, objSub
Dim objFile, files ,fso
Dim i
Set fso = CreateObject("Scripting.FileSystemObject")
Set subfolders = objFolder.SubFolders
Set files = objFolder.Files
' 指定のフォルダに格納された各サブフォルダをログ出力
i = 0
For Each objFile In files
strFolder = fso.GetParentFolderName(objFile.Path)
i = i + 1
Next
if i <> 0 then strm.WriteLine strFolder & "," & i 'ファイル数0件は出力しない。
' ' サブフォルダに対して再帰処理
For Each objSub In subfolders
Call WriteFilePathAll( objSub, strm )
Next
End Sub
'出力ログのパス指定(スクリプトと同じパス)
Public Function GetScriptPath(ByVal objFS)
Dim path
path = WScript.ScriptFullName
GetScriptPath = Left( path, InStrRev(path, "\") - 1 )
End Function
コメント