忍者ブログ

ファイル・フォルダ一覧取得ツール_VBS編~Dirコマンドの結果から生成~

2022年09月22日

「ファイル・フォルダ一覧取得ツール~Dirコマンドの結果から生成~」シリーズ
操作編
VBS編【今回】
VBAファイルリスト編
VBAフォルダリスト編

ファイル・フォルダ一覧取得ツールの続編。
今回は、DIRコマンドをクリップボードに送るVBScriptについて。

VBScriptを実行すると、InputBoxが表示されて絞り込みキーワードの入力を促す。

何も入力しなかった場合(キャンセル押した場合)は、絞り込みなし。フォルダを指定
キーワードを入力した場合は、キーワードで絞り込んだコマンドを生成する。



まずはコマンドプロンプトで入力するDirコマンドについて説明。


「Dir フォルダパス」を入力すると、指定したフォルダの中身を一覧で表示できる。

今回の条件
サブフォルダを含めるので、オプションの/Sを追加。
ファイルのみを対象とするので、オプションの/A-D(フォルダじゃない)を追加。
結果をテキストファイルに書き込みたいので、 > で出力先ファイルパスを指定。

xxフォルダをCドライブ直下に置いた場合、
Dir /S /A-D "C:\" > "C:\xxファイル一覧\Dirリスト.txt"

Cドライブの中から「仕様書」だけ探したい場合、
Dir /S /A-D "C:\*仕様書*" > "C:\xxファイル一覧\Dirリスト(仕様書).txt"


キーワードの絞り込み機能は実装しているものの、
エクセルで表示できる件数なら別に使う必要はないのよね。



VBSの処理としては、
InputBoxでテキストを取得して変数に格納。

dir_cmd.vbsファイルのフルパスを取得して、
上の階層のフォルダのパスと出力先ファイル名のパスを変数に格納。

変数の値を組み合わせて、上記のコマンドを変数に格納。

格納したコマンドをクリップボードにコピーするモジュールに渡して完了。


以下、ソース。ソースコードファイルは こちら




'文字列を取得
Dim iText: iText = inputbox("絞り込みキーワードがあれば入力してください")

Dim fso: set fso = createObject("Scripting.FileSystemObject")
Dim txtPath : txtPath = fso.getParentFolderName(WScript.ScriptFullName) 'ここのフォルダパス
Dim yPos : yPos = InStrRev(txtPath, "\")
Dim tarPath : tarPath = Left(txtPath, yPos ) '対象フォルダパス
Dim txtFulName: txtFulName = txtPath & "\" & "Dirリスト.txt"

if iText <> "" then 'デフォは上記だけど、別指定したら変更する
tarPath = tarPath & "*" & iText & "*"
txtFulName = txtPath & "\" & "Dirリスト("& iText &").txt"
end if

Dim sCmd : sCmd = "Dir /S /A-D """ & tarPath & """ > """ & txtFulName & """ " &chr(10)

With CreateObject("WScript.Shell").Exec("clip")
Call .StdIn.Write(sCmd)
End With

msgbox "クリップボードに出力しました。" & chr(10) & chr(10) & "<出力コマンド>" & chr(10) & sCmd



PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字