【VBScript】ドラッグアンドドロップしたファイルのパスとファイル名を取得する


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

VBScript

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

VBScriptで、ドラッグアンドドロップしたファイルのパスとファイル名を取得するスクリプトをご紹介します。

はじめに

今回は、VBScriptを使用して、ドラッグアンドドロップされたファイルのパスとファイル名を取得するサンプルスクリプトをご紹介します。

また、取得したパスとファイル名は、クリップボードに格納します。
クリップボードに格納しておくことで、メモ帳などのテキストエディタやExcel、Wordに貼り付けることが出来るようになります。

使用方法

ここでは、本スクリプトの使用方法を説明します。

1.パス情報を取得したいフォルダまたは、ファイルを本スクリプトにドラッグ&ドロップします。
2.あとは、テキストエディタなどに貼り付けるだけです。

下記は、実際に使用した際のイメージです。
画像のようなファイルをドラッグ&ドロップします。

以下が取得されたファイル情報になります。

C:\ws\VBScript\フォルダ1
C:\ws\VBScript\フォルダ2
C:\ws\VBScript\フォルダ3
C:\ws\VBScript,あいうえお.log
C:\ws\VBScript,かきくけこ.conf
C:\ws\VBScript,さしすせそ.log
C:\ws\VBScript,ファイル1.txt
C:\ws\VBScript,ファイル2.txt
C:\ws\VBScript,ファイル3.txt

設定を変更することで、タブ区切りで出力することも可能です。
Excelに貼り付ける場合は、タブ区切りの方がセルごとに分けて貼り付けれるので便利かと思います。

C:\ws\VBScript\フォルダ1
C:\ws\VBScript\フォルダ2
C:\ws\VBScript\フォルダ3
C:\ws\VBScript	あいうえお.log
C:\ws\VBScript	かきくけこ.conf
C:\ws\VBScript	さしすせそ.log
C:\ws\VBScript	ファイル1.txt
C:\ws\VBScript	ファイル2.txt
C:\ws\VBScript	ファイル3.txt

スクリプトについて

こちらが、スクリプトのソースコードです。

Option Explicit

' ファイル、フォルダ判定部品の格納パス
Const CHECK_FILE_OR_FOLDER = "D:\Tool\VBScript\CheckFileOrFolder.vbs"

' カンマ[,]
Const vbComma = ","

' パスとファイル名の区切り文字
Dim delims
'delims = vbTab
delims = vbComma

' 改行コード
Dim br
br = vbCrLf

' ドラッグアンドドロップされたファイル情報
Dim args
Set args = WScript.Arguments

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

' WSHオブジェクトの作成
Dim objShell
Set objShell = CreateObject("WScript.Shell")

' クリップボード格納情報
Dim data
data = ""

' ファイル情報
Dim fileInfo
For Each fileInfo In args 
	' ファイル、フォルダ判定部品の呼び出し
	Select Case objShell.Run (CHECK_FILE_OR_FOLDER & " " & """" & fileInfo & """", , True)
		Case 0
			data = data & """Set-Clipboard -append ('" & fso.GetParentFolderName(fileInfo) & "'+'" & delims & "'+'" & fso.GetFileName(fileInfo) & "')" & """;" & br
		Case 1
			data = data & """Set-Clipboard -append '" & fso.GetFolder(fileInfo) & "'"";" & br
		Case Else
			MsgBox("ファイル情報の取得に失敗しました。")
	End Select
Next

' クリップボードに情報を登録する関数の呼び出し
setClipboard(data)

' WSHオブジェクトの破棄
Set objShell = Nothing

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

' 処理終了
WScript.Quit

' クリップボードへ文字列情報を登録する関数
Function setClipboard(ByVal str)
	Dim cmd
	str = Replace(str, vbTab, "	")
	cmd = "powershell -ExecutionPolicy RemoteSigned -Command Set-Clipboard """";" & str
	objShell.Run cmd, 0
End Function

こちらのソースコードをコピーし、テキストエディタなどに貼り付けて下さい。
後述しますが、一部、環境に合わせて内容を修正する必要があります。
その後、任意のファイル名で保存して下さい。(拡張子は「.vbs」にして下さい。)

修正箇所について説明します。
まず、4行目の設定ですが、本スクリプトはファイル形式(ファイルかフォルダか)を判定する外部部品を呼び出しています。
以下を参考に外部部品を作成し、その部品の格納パスを4行目に記述して下さい。

次に、9行目のパスとファイル名の区切り文字ですが、
区切り文字に使用したい記号(カンマまたはタブ)の方をコメントを外して下さい。
使用しない記号の方は、コメントアウトしておいて下さい。

以上、最低限の使用準備は完了となります。
本スクリプトで使用している機能の解説は次項「関連機能」でまとめています。
機能について理解を深めたい方は是非参考にして頂ければと思います。

関連機能

コメント

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