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」が開かれた画面](https://bonjiri-blog.com/wp-content/uploads/vbs-copytxt-00-02-800x324.png)
次に「hoge.txt」の内容がすべてコピーされます。
![「hoge.txt」の内容がすべてコピーされた画面](https://bonjiri-blog.com/wp-content/uploads/vbs-copytxt-01-01.png)
コピーされたあとはコマンドプロンプトが起動します。
![コマンドプロンプトが起動した画面](https://bonjiri-blog.com/wp-content/uploads/vbs-copytxt-02-01.png)
コピーされた「hoge.txt」の内容がコマンドプロンプトにペーストされ実行されます。
今回はテキスト内の最後に階層移動の[cd]コマンドを記載しているため、cdコマンドが正常に実行されることで、コピーした内容がコマンドプロンプト上で正常に動作するということも確認できました。
![コマンド実行画面](https://bonjiri-blog.com/wp-content/uploads/vbs-copytxt-03-01.png)
最後にコマンドプロンプトとメモ帳(hoge.txt)を閉じます。
![コマンドプロンプトとメモ帳(hoge.txt)を閉じた画面](https://bonjiri-blog.com/wp-content/uploads/vbs-copytxt-05-01.png)
実行する上での注意点
vbsの処理はGUI上で実行され、アクティブなアプリに対して処理を実行していきます。
なので実行途中に他のアプリを触る(例えばブラウザやデスクトップをクリックする)など、処理しようとしているアプリ以外のものをアクティブとしてしまうと、アクティブにしたアプリに対してコマンドが実行されてしまい、想定外の挙動になることがあるので注意が必要です。
![実行途中にアクティブなアプリを変更してしまった画面](https://bonjiri-blog.com/wp-content/uploads/vbs-copytxt-07.png)
似たような観点で、もしコマンドプロンプトで実行したコマンドが別のアプリを開く場合には、その開いたアプリでのコマンド実行となってしまうので注意が必要です。
コメント