vbsでテキストファイルの中身をコピーしてコマンドプロンプトに貼り付けて実行させてみました。
この記事で実施する内容
今回は以下の [1.] [2.] の処理を実行します。
1.「C:\hogehoge\」フォルダにある「hoge.txt」の中身をコピーし、コマンドプロンプトに貼り付けて実行
2.コマンドプロンプトのウインドウを閉じ、テキストファイルも自動で閉じる
今回は分かりやすいように、複製されるファイルと同じフォルダに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」の内容がコマンドプロンプトにペーストされ実行されます。
今回はテキスト内の最後に階層移動の[cd]コマンドを記載しているため、cdコマンドが正常に実行されることで、コピーした内容がコマンドプロンプト上で正常に動作するということも確認できました。
最後にコマンドプロンプトとメモ帳(hoge.txt)を閉じます。
実行する上での注意点
vbsの処理はGUI上で実行され、アクティブなアプリに対して処理を実行していきます。
なので実行途中に他のアプリを触る(例えばブラウザやデスクトップをクリックする)など、処理しようとしているアプリ以外のものをアクティブとしてしまうと、アクティブにしたアプリに対してコマンドが実行されてしまい、想定外の挙動になることがあるので注意が必要です。
似たような観点で、もしコマンドプロンプトで実行したコマンドが別のアプリを開く場合には、その開いたアプリでのコマンド実行となってしまうので注意が必要です。