本記事では、VBS(Visual Basic Script)を使ってテキストファイルのコマンドを自動でコピー → コマンドプロンプトに貼り付けて実行する方法を解説します。
特に、定型的なコマンドをスクリプト化して自動化したい方、手入力を減らして作業効率を上げたい方に役立つ内容です。
1.準備
今回は以下の処理を実行します。
C:\hogehoge\hoge.txt
に記載されたコマンドをVBS経由で読み取り、コマンドプロンプトへ自動貼り付け・実行- コマンド実行後、自動でコマンドプロンプトとテキストファイルを閉じる
今回は分かりやすいように、複製されるファイルと同じフォルダにvbsファイルを置いて実行しています。
1-1.実行したいコマンドを記載するテキストファイル
今回コピーするテキストファイル「hoge.txt」には以下の内容を記載しています。
hogehoge
hogehoge02
hogehoge03
hogehoge04
cd ..
2.VBSスクリプトと解説
今回実行する vbsスクリプトです。
' WScript.Shellオブジェクトを生成
Dim WS
Set WS = WScript.CreateObject("WScript.Shell")
' hoge.txt を開いて内容を選択・コピー
CreateObject("Shell.Application").ShellExecute "C:\hogehoge\hoge.txt"
WScript.Sleep 2000
WS.SendKeys "^a"
WScript.Sleep 2000
WS.SendKeys "^c"
WScript.Sleep 2000
' コマンドプロンプトを起動
WS.Run("cmd.exe")
WScript.Sleep 2000
' クリップボードの内容を貼り付けて実行
WS.SendKeys "^v"
WScript.Sleep 2000
WS.SendKeys "{ENTER}"
WScript.Sleep 2000
' コマンドプロンプトを閉じる
WS.SendKeys "exit"
WScript.Sleep 2000
WS.SendKeys "{ENTER}"
WScript.Sleep 2000
' メモ帳をアクティブにして閉じる(Alt+F4)
WS.AppActivate "notepad"
WScript.Sleep 2000
CreateObject("WScript.Shell").SendKeys "%{F4}"
WScript.Sleep 2000
3.動作確認(実行結果)
上記のスクリプトを実行した結果です。
まず「hoge.txt」が開かれます。

次に「hoge.txt」の内容がすべてコピーされます。

コピーされたあとはコマンドプロンプトが起動します。

コピーされた「hoge.txt」の内容がコピーされコマンドプロンプトにペーストされコマンドが実行されます。
今回はテキスト内の最後に階層移動の[cd]コマンドを記載しているため、cdコマンドが正常に実行されることで、コピーした内容がコマンドプロンプト上で正常に動作するということも確認できました。

最後にコマンドプロンプトとメモ帳(hoge.txt)を閉じます。

4.実行する上での注意点
vbsの処理はGUI上で実行され、アクティブなアプリに対して処理を実行していきます。
なので実行途中に他のアプリを触る(例えばブラウザやデスクトップをクリックする)など、処理しようとしているアプリ以外のものをアクティブとしてしまうと、アクティブにしたアプリに対してコマンドが実行されてしまい、想定外の挙動になることがあるので注意が必要です。

似たような観点で、もしコマンドプロンプトで実行したコマンドが別のアプリを開く場合には、その開いたアプリでのコマンド実行となってしまうので注意が必要です。