012 ドラッグアンドドロップVBS

こんにちは、くのへ@MasazaneKunoheです。

以前、VBS(VBScript)を紹介致しました。その記事はこちら

VBSはファイルをドラッグアンドドロップした時に動作するものも作れます。

今日は、「ドラッグアンドドロップVBS」をご紹介します。

ドラッグアンドドロップVBSの作り方

ドラッグアンドドロップVBSを作るためには、WSript.argumentsを使います。

超シンプルな次のコードのVBSを作って動かしてみましょう。

Option Explicit

MsgBox WScript.Arguments.Item(0)

このVBSにドラッグアンドドロップしてみましょう。(下記動画参照)

ドラッグアンドドロップしたファイルのアドレスが表示されましたね。
そう、WScript.argumentsを使うと、ドラッグアンドドロップしたファイルのフルパスを取得できるのです。

複数のファイルをドラッグアンドドロップすると、次のような関係でいずれもWScript.argumentsの中にフルパスが格納されます。
 1番目のファイル ⇒ WScript.arguments(0)
 2番目のファイル ⇒ WScript.arguments(1)
 3番目のファイル ⇒ WScript.arguments(2)
 ・・・

WScript.argumentsはいわゆる”コレクションオブジェクト”なので、最初のサンプルコードを次のようにForEachを使って書き換えることで、ドラッグアンドドロップされたすべてのファイルを処理できます。

Option Explicit

Dim arg

For Each arg in Wscript.Arguments 
  MsgBox arg
Next

ドラッグアンドドロップでWord→PDF化

こちらのリンク先にてWord⇒PDF化のドラッグアンドドロップVBSが紹介されています。(もりさんのブログ)

とても便利なVBSですのでこの記事は必見です。

ファイル名に日付を付けてリネームするVBS

Twitterで私が尊敬する方の一人「reimeさん」がドラッグアンドドロップしたファイルをリネーム(:ファイル名に日付を追加)するVBSをご紹介されていました。

このツイートでご紹介頂いているコードはこちらです。やはりWScript.Argumentsを使っていますね~

Option Explicit

Call Main


Sub Main()

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

  Dim arg
  For Each arg In WScript.Arguments

   Dim f
   Set f = fso.GetFile(arg)
   Dim newName
   newName = fso.GetBaseName(f.Name) & "_" & CreateDateTimeString(Now) & "." & fso.GetExtensionName(f.Name)
   f.Name = newName
  Next

End Sub

Function CreateDateTimeString(dt)

  CreateDateTimeString = Replace(Replace(Replace(dt,"/","-"),":","-")," ","_")

End Function

FSOを上手く使ってファイル名に日付を追加してますね~


今日は「ドラッグアンドドロップVBS」を御紹介致しました。
アイディア次第で色んな便利なものを作れますよ!

ではまた別の記事で~
🦅バサバサ~

くのへツイッターはこちら。
くのへスタジオはこちら。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です