VBSでファイル名の日付を変更してコピーする方法|yyyyMMddを翌日に変更

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

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では、大きく分けて以下の処理を実行しています。

  1. 今日の日付をyyyyMMdd形式で取得
  2. 明日の日付をyyyyMMdd形式で取得
  3. 今日の日付を使用して対象ファイル名を作成
  4. 元ファイルを別フォルダへコピー
  5. 元ファイルの名前を翌日の日付に変更
  6. 処理完了のメッセージを表示

例えば、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.vbs

PowerShellの場合は、以下で実行できます。

.\test.vbs

6-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でこれらの処理を自動化できます。

特に、日次でファイルを更新する処理や、変更前のファイルをバックアップしておきたい場合に利用できます。