VBSでテキストファイルをコピーする方法

VBS VBS

vbsでテキストファイルの値をコピーしてみました。

広告

テキストファイルをコピーする

以下の内容で特定のテキストファイルをコピーすることができます。

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

今回は「hoge_new.txt」を新規作成し、そのファイルに元のファイルの内容をコピーをします。
処理を確実に実行するためにところどころに「WScript.Sleep 2000(2秒間停止)」を入れています。

実行結果

スクリプト実行前

「hogehoge」フォルダにはコピー元となる「hoge.txt」しかありません。

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

スクリプト実行後

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

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

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

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

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

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

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

実行する上での注意点

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

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

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

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

コメント

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