VBS(Visual Basic Script)を使って、あるテキストファイルの内容を 新しいテキストファイルへコピーする方法 をまとめてみました。
既存ファイルの内容を別ファイルに複製したい場合や、バックアップ用のテキストファイルを自動生成したい場面で利用できるかと思います。
1.テキストファイルをコピーするvbsスクリプト
以下のスクリプトで、元ファイル(例:hoge.txt
)の内容を新しいファイル(例:hoge_new.txt
)にコピーすることができます。
Dim FSO
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
FSO.CreateTextFile("C:\hogehoge\hoge_new.txt")
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
'コピー先のファイルを新規作成
CreateObject("Shell.Application").ShellExecute "C:\hogehoge\hoge_new.txt"
WScript.Sleep 2000
'ペースト
WS.SendKeys "^v"
WScript.Sleep 2000
'保存
WS.SendKeys "^s"
WScript.Sleep 2000
WS.AppActivate "notepad"
WScript.Sleep 2000
'テキストファイルを閉じる(コピー先のファイル)
CreateObject("WScript.Shell").SendKeys "%{F4}"
WScript.Sleep 2000
'テキストファイルを閉じる2回目(コピー元のファイル)
CreateObject("WScript.Shell").SendKeys "%{F4}"
WScript.Sleep 2000
処理を確実に実行するためにところどころに「WScript.Sleep 2000(2秒間停止)」を入れています。
2.実行前後の挙動(実行例)
2-1.スクリプト実行前の状態
C:\hogehoge\
フォルダ内にはコピー元となる hoge.txt
しかなく、コピー先の hoge_new.txt
はありません。

2-2.スクリプト実行後の状態
コピー先の hoge_new.txt
が新規作成され、コピー元の hoge.txt
の内容をコピーするためにメモ帳(notepad)が開かれ、GUI上で処理されていきます。

同じテキストファイルを実行しているのでGUI上ではテキストファイルが重なって表示されます。(影の濃淡で確認できるかと思いますが分かりづらいです。)

最後にGUI上で開いていた2つのメモ帳が閉じられます。

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