VBSでテキストファイルをコピー(新規ファイルに内容を複製)する方法

VBS VBS
この記事は約4分で読めます。

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 はありません。

「hoge.txt」のみ存在する状態の画面

2-2.スクリプト実行後の状態

コピー先の hoge_new.txt が新規作成され、コピー元の hoge.txt の内容をコピーするためにメモ帳(notepad)が開かれ、GUI上で処理されていきます。

メモ帳が開かれGUI上で処理されていく画面

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

「hoge.txt」の内容が「hoge_new.txt」にコピーされる画面

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

2つのメモ帳が閉じられる画面

3.実行する上での注意点

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

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

今回でいうと実行中にデスクトップをクリックなどすると、アクティブアプリが変わってしまうので正常に動作が完了しません。

なのでVBS実行中は他の操作はしないようにしましょう。