VBS(VBScript)を使うと、ファイルのコピーやファイル名の変更を自動化できます。
この記事では、ファイル名に含まれている yyyyMMdd 形式の日付を翌日に変更し、変更前のファイルを別フォルダへコピーする方法を試してみました。
例えば、以下のようなファイルを対象にします。
C:\hogehoge\
└─ hogehoge_20260909.txt
VBSを実行すると、元のファイルを別フォルダへバックアップしたうえで、元ファイルの名前を翌日の日付に変更します。
C:\hogehoge\
├─ hogehoge_20260910.txt
│
└─ folder\
└─ hogehoge_20260909.txt
日次処理などで、ファイル名の日付を自動的に更新したい場合に利用できます。
1.必要となる処理の確認
今回作成しようとするスクリプトについて、必要となる処理を1つずつ確認します
1-1. VBSでファイルをコピーする
まず、VBSでファイルをコピーする方法を確認します。
ファイルのコピーには、FileSystemObject の CopyFile メソッドを使用します。
Dim FSO
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "C:\hogehoge\test.txt", "C:\hogehoge\backup\"この処理を実行すると、test.txtがbackupフォルダへコピーされます。
C:\hogehoge\
├─ test.txt
└─ backup\
└─ test.txt
1-2.VBSでファイル名を変更する
次に、VBSでファイル名を変更する方法です。
FileSystemObjectで対象ファイルを取得し、Nameプロパティを変更することでファイル名を変更できます。
Dim FSO
Dim File
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\hogehoge\test.txt")
File.Name = "test2.txt"実行すると、test.txt が test2.txt に変更されます。
1-3.ファイル名のyyyyMMddを翌日に変更する
「ファイル名の日付を翌日に変更する処理」を作成します。
例えば、hogehoge_20260909.txt というファイルを対象にします。
VBSを実行すると、ファイル名を hogehoge_20260910.txt に変更します。
翌日の日付を取得するには、DateAdd 関数を使用します。
DateAdd("d", 1, Date()) は、現在の日付に1日を加算する処理となります。
4.VBSスクリプト
今回は、ファイル名を変更する前に元ファイルを別フォルダへコピーも実行します。
VBSスクリプトは以下です。
以下のVBSを作成します。
Option Explicit
Dim FSO
Dim FileNamePrefix
Dim FileNameSuffix
Dim TodayDate
Dim TomorrowDate
Dim FileName
Dim TomorrowFileName
Dim SourceFilePath
Dim BackupFolderPath
'ファイル名の設定
FileNamePrefix = "hogehoge_"
FileNameSuffix = ".txt"
'今日の日付をyyyyMMdd形式で取得
TodayDate = Year(Date()) & _
Right("0" & Month(Date()), 2) & _
Right("0" & Day(Date()), 2)
'明日の日付をyyyyMMdd形式で取得
TomorrowDate = DateAdd("d", 1, Date())
TomorrowDate = Year(TomorrowDate) & _
Right("0" & Month(TomorrowDate), 2) & _
Right("0" & Day(TomorrowDate), 2)
'ファイル名を作成
FileName = FileNamePrefix & TodayDate & FileNameSuffix
TomorrowFileName = FileNamePrefix & TomorrowDate & FileNameSuffix
'ファイルパスを設定
SourceFilePath = "C:\hogehoge\" & FileName
BackupFolderPath = "C:\hogehoge\folder\"
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
'元ファイルをバックアップ
FSO.CopyFile SourceFilePath, BackupFolderPath
'ファイル名を翌日に変更
FSO.GetFile(SourceFilePath).Name = TomorrowFileName
MsgBox "処理が完了しました。"4-1.スクリプトの処理内容
今回のVBSでは、大きく分けて以下の処理を実行しています。
- 今日の日付を
yyyyMMdd形式で取得 - 明日の日付を
yyyyMMdd形式で取得 - 今日の日付を使用して対象ファイル名を作成
- 元ファイルを別フォルダへコピー
- 元ファイルの名前を翌日の日付に変更
- 処理完了のメッセージを表示
例えば、2026年9月9日に実行した場合、
今日 :20260909
明日 :20260910
となります。
そのため、hogehoge_20260909.txt が、hogehoge_20260910.txt に変更されます。
一方、コピー先には変更前のファイルを残します。
C:\hogehoge\folder\
└─ hogehoge_20260909.txt
6.VBSを実行する
作成したVBSファイルは、.vbsのファイルをダブルクリックすることで実行できます。
また、コマンドプロンプトから実行する場合は、以下のように実行します。
C:\Users\ユーザー名\Desktop>test.vbsPowerShellの場合は、以下で実行できます。
.\test.vbs6-1.実行結果
実行前は以下の状態です。
C:\hogehoge\
└─ hogehoge_20260909.txt
C:\hogehoge\folder\
VBSを実行すると、元ファイルがfolderへコピーされます。
C:\hogehoge\folder\
└─ hogehoge_20260909.txt
その後、元ファイルの名前が翌日の日付に変更されます。
C:\hogehoge\
└─ hogehoge_20260910.txt
最終的には以下の状態になります。
C:\hogehoge\
├─ hogehoge_20260910.txt
└─ folder\
└─ hogehoge_20260909.txt
元ファイルをコピーしてから名前を変更しているため、変更前のファイルをバックアップとして残すことができます。
7.まとめ
今回は、VBSを使ってファイルをコピーし、ファイル名に含まれる yyyyMMdd 形式の日付を翌日に変更する方法を試してみました。
今回利用した主な処理は以下のとおりです。
| 処理 | VBS |
|---|---|
| ファイルをコピー | CopyFile |
| ファイルを取得 | GetFile |
| ファイル名を変更 | Name |
| 今日の日付を取得 | Date() |
| 日付に1日加算 | DateAdd("d", 1, Date()) |
| 年を取得 | Year() |
| 月を取得 | Month() |
| 日を取得 | Day() |
ファイル名に日付を付けて管理している場合、VBSでこれらの処理を自動化できます。
特に、日次でファイルを更新する処理や、変更前のファイルをバックアップしておきたい場合に利用できます。


