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
コメント