VBScript ドラッグ&ドロップで簡単にパスを取得する

スポンサーリンク
DX/ITスキル

こんにちは!みやしんです。

今回はVBScriptを使って、簡単で便利なツールを作ってみたいと思います。

会社で働いていると、社内サーバーのファイルやフォルダのパスをメールに貼ったりしますよね!

<C:\Users\1234567\Desktop> みたいに両端を<>で囲ったりすると思います。

ファイルやフォルダが1つなら「Shiftキーを押しながら右クリック → パスのコピー」で簡単にパスをゲットできますが、複数のファイルやフォルダが存在すると、ひとつひとつこの作業を繰り返すのはちょっと面倒ですよね。

そんな時でも「ドラッグ&ドロップ」で簡単に複数のパスを一括でコピーできるツールを作成する方法をご紹介したいと思います。

みやしん
みやしん

VBScriptは環境設定が不要だから初心者でも挑戦しやすいニャ!

なんと、Windowsのパソコンさえあれば誰でも出来ちゃうからとっても便利ニャ!

早く知りたいニャー!

スポンサーリンク

ツール紹介

GetFilePath.VBSと名付けたVBSファイルにファイルやフォルダをドラッグ&ドロップだけで簡単にパスを把握できます。

図にまとめてみました。

ファイルやフォルダが複数あったり、混ざっていてもOKです!

サンプルコード

Option Explicit        

    'WScript.Argumentsでドラッグ&ドロップしたファイル情報を引数として配列で入手
    Dim oFileInfoArray
    Set oFileInfoArray = WScript.Arguments

    'ファイル操作をするためのファイルシステムオブジェクトのインスタンスを作成
    Dim oFso
    Set oFso = CreateObject("Scripting.FileSystemObject")


    'イテレータ
    Dim i

    'ファイルパス
    Dim sFilePath

    '取得したファイル名
    Dim sFileName

    '表示する全てのファイル名
    Dim sAllFileNames

    'コピぺする用にフォーマットを整えた全てのパス
    Dim sAllPath



    '取得したファイル情報を順番に取り出し、ファイル名とパスを入手
    For i = 0 to (oFileInfoArray.count - 1)    'countで配列の要素数。0はじまりのため-1する

        sFilePath = oFileInfoArray.Item(i)    'Itemでファイル情報からpathを入手

        sFileName = oFso.GetFileName(sFilePath)    'GetFileNameでパスからファイル名部分のみを取得する

        sAllFileNames = sAllFileNames & VbCrLf & sFileName    'sAllFileNamesにファイル名を足していく。VbCrLfは改行

        sFilePath = ("<" & sFilePath & ">")    'ハイパーリンク化のために<>を付ける

	sAllPath = (sAllPath & VbCrLf & sFilePath)    'sAllPathに全てのパスを足していく。

    Next


    'ファイルのフルパスをInputBoxで表示させる
    Call InputBox("ドラッグアンドドロップしたファイル名" & sAllFileNames,"ファイルのフルパスを表示", sAllPath )



    'メモリ開放(無くて良い)
    Set oFso = Nothing    'オブジェクト変数をクリア
    Set oFileinfoArray = Nothing

スクリプトのポイント解説

WScript.Argumentsでファイル情報を取得

VBScript で起動時に指定された引数を取得するには WscriptオブジェクトのArgumentsプロパティを使います。

今回、ドラッグ&ドロップしたときにVBSが起動しますので、 ドラッグ&ドロップ したファイルやフォルダの情報が引数としてWScript.Argumentsに格納されることになります。

WScriptオブジェクト・モデル(再掲)起動時パラメータは、WScript.ArgumentsプロパティからアクセスできるWshArgumentsコレクションに格納されている。さらにパラメータの種類により、WshNamedコレクションとWshUnnamedコレクションにフィルタリングされて格納される(図中の「M」はメソッド、「P」はプロパティ)。

WScriptオブジェクト
起動時パラメータは、WScript.ArgumentsプロパティからアクセスできるWshArgumentsコレクションに格納されている。さらにパラメータの種類により、WshNamedコレクションとWshUnnamedコレクションにフィルタリングされて格納される。図中の「M」はメソッド、「P」はプロパティ。

基本的には以下の2つをしっかり覚えておきましょう!

コード入手できる情報
WScript.Arguments.Item()ファイルパス
WScript.Arguments.count引数の数

FileSystemObjectでファイルやフォルダを操作

FileSystemObjectオブジェクトは、ドライブ・フォルダ・ファイルなどを操作できるオブジェクトです。FileSystemObjectオブジェクトを使うには、CreateObjectメソッドを実行してFileSystemObjectオブジェクトのインスタンスを作成します。

Dim oFso
Set oFso = CreateObject("Scripting.FileSystemObject")

CreateObjectメソッドに指定する引数は、”Scripting.FileSystemObject“です。

今回はGetFileNameメソッドを使って、指定したファイルからファイル名を取得します。

sFileName = oFso.GetFileName(sFilePath)    'GetFileNameでパスからファイル名部分のみを取得する

他にも一部メソッドを紹介します。

メソッド内容
CopyFileファイルをコピーする
CopyFolderフォルダをコピーする
CreateFolderフォルダを作成
CreateTextFileテキストファイルを作成
DeleteFileファイルを削除
DeleteFolderフォルダを削除
FileExistsファイルの存在確認
FolderExistsフォルダの存在確認

InputBox関数

InputBoxに取得したファイル名やフォルダ名、パスを表示します。

引数と表示の関係はこんな感じです。

合わせて読みたい

VBScript関連は下記の記事もおススメです。

他のプログラミング言語にも興味がある方は、こちらもどうぞ!

DX/ITスキル
スポンサーリンク
記事が良かったらSNSでシェアを宜しくお願いします!
みやしんをフォローすると役立つ情報がいっぱいにゃ!
スポンサーリンク

コメント

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