解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

VBScript でフォルダ内ファイル一覧のファイル出力


こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。




この記事の目次




目的


フォルダをドラッグ & ドロップすると、フォルダ内のファイルリストを CSV ファイルに出力する VBScript プログラムを作成します。




関数

ソースコード


'-------------------------------------------------------------------------------------------------------
' 引数が無かった時の処理
If WScript.Arguments.count = 0 then
   WScript.Echo "引数が無いため、実行できません。" & vbNewLine & _
                "フォルダをドロップしてください。"
   WScript.Quit
end If
 
'-------------------------------------------------------------------------------------------------------
' ファイル入出力用の変数
ForReading = 1
ForWriting = 2
ForAppending = 3
 
'-------------------------------------------------------------------------------------------------------
' フォルダ内ファイルリスト出力
for each args In WScript.Arguments
  
   '----------------------------------------------------------------------------------------------------
   ' ファイルシステムオブジェクト作成
   Set objFileSys = CreateObject("Scripting.FileSystemObject")
  
   '----------------------------------------------------------------------------------------------------
   ' ドロップされた引数がフォルダかファイルかを判定する
   If objFileSys.FolderExists(args) then
      ' is folder.
   ElseIf objFileSys.FileExists(args) then
      ' is file.
      WScript.Echo "ファイルがドロップされました。" & vbNewLine & _
                   "処理を終了します。"
      WScript.Quit
   else
      ' is unknown.
      WScript.Echo "フォルダ 及び ファイル とも認識できないデータがドロップされました。" & vbNewLine & _
                   "処理を終了します。"
      WScript.Quit
   End If
  
   '----------------------------------------------------------------------------------------------------
   ' ドロップされたフォルダのオブジェクト取得
   Set objFolder = objFileSys.GetFolder(args)
  
   '----------------------------------------------------------------------------------------------------
   ' ファイルが見つからなかった場合、プログラムを終了する
   If objFolder.Files.Count = 0 then
      WScript.Echo "ファイルは見つかりませんでした。"
      WScript.Quit
   End If
  
   '----------------------------------------------------------------------------------------------------
   ' 出力ファイルパスの作成
   pos = InstrRev(args, "\")
   InputFolderName = Mid(args, pos + 1)
   PathOutput = Left(args, pos) & "\" & InputFolderName & "-FileList" & ".csv"
  
   '----------------------------------------------------------------------------------------------------
   ' テキストファイルを開く
   Set fileWriter = objFileSys.OpenTextFile(PathOutput, ForWriting, True)
  
   '----------------------------------------------------------------------------------------------------
   ' 出力
   for each f In objFolder.Files
      fileWriter.WriteLine f.Name
   next
  
   '----------------------------------------------------------------------------------------------------
   ' テキストを閉じる
   fileWriter.Close
  
   '----------------------------------------------------------------------------------------------------
   ' ドロップされたフォルダのオブジェクトの破棄
   Set objFolder = Nothing
  
   '----------------------------------------------------------------------------------------------------
   ' ファイルシステムオブジェクトの破棄
   Set objFileSys = Nothing
  
   '----------------------------------------------------------------------------------------------------
   ' 作成したファイルリストを開く
   Set objWsh = WScript.CreateObject("WScript.Shell")
   objWsh.Run PathOutput
   Set objWsh = Nothing
  
next

使い方

上のソースコードをメモ帳にコピペして、拡張子を『.vbs』にして、すべてのファイルとして保存すれば、ドロップしたフォルダの中のファイルを CSV のリストに出力するプログラムが出来ます。

CSV のファイルリストはドロップしたフォルダと同じ場所に作成されます。

デスクトップに置いておくと意外と便利です。




コメント

この記事では CSV ファイルを作成していますが、テキストファイル、 Microsoft Word ファイル、 Microsoft Excel ファイルなどに出力するといろいろな使い道がありそうです。




以上