コピペですぐに使えるファイル一覧を取得するスクリプトを公開します。
取得した情報のテキストへの出力とクリップボードへの格納を同時に行うことが可能です。
使い方
本スクリプトを実行すると、画像のようなダイアログが表示されるので、ファイルリストを取得するパスを入力します。
入力後は、「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です。
プログラムも複雑ではないので、色々変更して実行するのも面白いかもしれませんね。
そもそもVBScriptファイルの作り方が分からない!って方はこちらの記事を参考にして下さい。
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
記事は以上です。すごく便利なので、どんどん使っちゃって下さい!
コメント