【vbs】テキストの内容をコピーしてコマンドプロンプトに貼り付ける

VBS VBS

vbsで特定のテキストファイルの中身をコピーしてコマンドプロンプトに貼り付ける方法をまとめました。

スクリプトなどで特定のテキストファイルの内容をコマンドプロンプトに渡したい場合に利用できるかと思いますので参考としていただけますと幸いです。

広告

この記事で実施する内容

以下の「今回利用するvbsスクリプト」の項目に記載した内容を拡張子vbsのファイルに張り付けて実行することで、以下の [1.] [2.] プロセスを実行します。

1.「C:\hogehoge\」フォルダにある「hoge.txt」の中身をコピーして、コマンドプロンプトに貼り付けます。

2.その後コマンドプロンプトは[exit]で閉じ、開いたテキストファイルも [F4] キーを利用してスクリプト内で自動で閉じます。

今回は分かりやすいように、複製されるファイルと同じフォルダにvbsファイルを置いて実行しています。

hoge.txt の内容

今回コピーするテキストファイル「hoge.txt」には以下の内容を記載しています。

hogehoge
hogehoge02
hogehoge03
hogehoge04
cd ..

今回利用するvbsスクリプト

今回実行する vbsスクリプトの中身です。

Dim WS
Set WS = WScript.CreateObject("WScript.Shell")

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

WS.AppActivate "notepad"
WScript.Sleep 2000
CreateObject("WScript.Shell").SendKeys "%{F4}"
WScript.Sleep 2000

実行結果

上記のスクリプトを実行した結果です。

まず「hoge.txt」が開かれます。

「hoge.txt」が開かれた画面

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

「hoge.txt」の内容がすべてコピーされた画面

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

コマンドプロンプトが起動した画面

コピーされた「hoge.txt」の内容がコマンドプロンプトにペーストされ実行されます。

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

コマンド実行画面

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

コマンドプロンプトとメモ帳(hoge.txt)を閉じた画面

実行する上での注意点

vbsの処理はGUI上で実行され、アクティブなアプリに対して処理を実行していきます。

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

今回でいうとメモ帳以外のアプリをアクティブにしてしまうと、そのアプリに対してコピーが実行されたり、ペーストを実行したりしてしまいます。

実行途中にアクティブなアプリを変更してしまった画面

コメント

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