【VBScript】コピペでOK!ファイル一覧の取得スクリプト


この記事はプロモーションを含みます。

VBScript

ホーム > VBScript 逆引きリファレンス

コピペですぐに使えるファイル一覧を取得するスクリプトを公開します。
取得した情報のテキストへの出力とクリップボードへの格納を同時に行うことが可能です。

使い方

本スクリプトを実行すると、画像のようなダイアログが表示されるので、ファイルリストを取得するパスを入力します。
入力後は、「OK」ボタンをクリックするだけです!

ファイルリストはテキストへの出力クリップボードへの格納の2パターンで取得しています。

まずは、クリップボードに格納されたものを見てみましょう。
タブ区切り(tsv形式)で格納しているので、以下のようにエクセルに直接貼り付けることが可能で、さらにセルごとに分割されて貼り付けられます。

次にテキストで出力されたものを確認してみます。
テキストファイルは、このVBScriptファイルを置いているフォルダと同じ場所に「Sample.txt」というファイル名で出力されます。
以下がテキストファイルの内容です。
こちらもタブ区切りで出力しているので、エクセルにコピペすることでセル毎に分かれて入力されます。

格納パス	ファイル名	サイズ	更新日時
C:\workspace\VBScript\dir1\dir2	dir2.txt	0	2022/01/16 1:09:33
C:\workspace\VBScript\dir1	dir1.txt	0	2022/01/16 1:09:23
C:\workspace\VBScript\folder1	folder1.txt	0	2022/01/16 1:10:14
C:\workspace\VBScript	clipboard.vbs	613	2022/03/07 16:29:55
C:\workspace\VBScript	function.vbs	524	2022/02/21 15:31:21
C:\workspace\VBScript	getFileList.vbs	2111	2022/03/07 17:01:36
C:\workspace\VBScript	hello.vbs	21	2022/03/10 16:33:36
C:\workspace\VBScript	main.vbs	350	2022/02/21 15:32:16
C:\workspace\VBScript	Sample.txt	519	2022/03/11 17:10:20
C:\workspace\VBScript	Test.vbs	853	2022/01/18 0:17:25

使い方は以上になります。簡単ですね!

ソースコード

ソースコードになります。コピペでOKです。
プログラムも複雑ではないので、色々変更して実行するのも面白いかもしれませんね。

Option Explicit

' 出力するファイルリスト
Dim fileListName
fileListName = ".\Sample.txt"

' ファイルリストの区切り文字
Dim delims
delims = vbTab

' ファイル一覧を取得するパス
Dim getListPath
getListPath = InputBox("ファイルリストを取得するパスを入力して下さい。", "ファイルリスト取得")

' ファイルシステムオブジェクトの作成
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

If(getListPath = "")Then
	Call MsgBox("入力がキャンセルされました。" & vbCrLf & "処理を終了します。", 64, "終了確認")
	WScript.Quit
End If

If Not(fso.FolderExists(getListPath)) Then
	' フォルダが存在しない場合の処理
	Call MsgBox("入力されたフォルダが見つかりません。" & vbCrLf & "処理を終了します。", 48, "実行エラー")
	WScript.Quit
End If

' ファイルの存在チェック
If(fso.FileExists(fileListName))Then
	' ファイルの削除
	fso.DeleteFile fileListName
End If

' テキストファイルのオープン(追記モード)
Dim fileList
Set fileList = fso.OpenTextFile(fileListName, 8, True)

' ヘッダーの作成
fileList.WriteLine("格納パス" & delims & "ファイル名" & delims & "サイズ" & delims & "更新日時")

' ファイル一覧の取得
Call GetFileList(fso.GetFolder(getListPath))

' ファイルを読み取り専用で読み込み
Dim stream
Set stream  = fso.OpenTextFile(fileListName, 1)

' クリップボードにファイル情報を登録
Call setClipboard(stream.ReadAll)

' ファイルシステムオブジェクトの破棄
Set fso = Nothing

' 処理終了
WScript.Quit

' ファイル一覧の取得関数
Function GetFileList(Byval targetPath)
	Dim folder, file

	' フォルダが存在する場合は、そのフォルダ配下を探索する
	For Each folder In targetPath.SubFolders
		GetFileList(folder)
	Next

	' ファイル一覧の表示
	For Each file In targetPath.files
		' ファイル情報の書き出し
		fileList.WriteLine(file.ParentFolder & delims & file.Name & delims & file.Size & delims & file.DateLastModified)
	Next
End Function

' クリップボードへ文字列情報を登録する関数
Function setClipboard(ByVal str)
	Dim objShell
	Set objShell = CreateObject("WScript.Shell")
	objShell.Exec("Clip").StdIn.WriteLine str
	Set objShell = Nothing
End Function

記事は以上です。すごく便利なので、どんどん使っちゃって下さい!

コメント

タイトルとURLをコピーしました