VBSでフォルダを作成する方法|複数・日付付きフォルダを一括作成

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

VBS(VBScript)では、FileSystemObject を利用してフォルダを作成できます。

フォルダを1つ作成するだけであれば簡単ですが、実際の業務では「日付を付けたフォルダを作成する」「親フォルダと複数の子フォルダをまとめて作成する」といった処理が必要になることがあります。

この記事では、VBSを使ってフォルダを作成する方法と、基本的な処理から複数フォルダを一括作成する方法を試してみました。

広告

1.VBSでフォルダを作成する

VBSでフォルダを作成する場合は、FileSystemObjectCreateFolder メソッドを使用します。

基本的なコードは以下のとおりです。

Dim FSO

Set FSO = WScript.CreateObject("Scripting.FileSystemObject")

FSO.CreateFolder("C:\hogehoge")

このVBSを実行すると、C:\ の直下に hogehoge というフォルダが作成されます。

1-1. フォルダが存在する場合

すでに同じ名前のフォルダが存在する場合、CreateFolder をそのまま実行するとエラーになります。

そのため、フォルダを作成する前に FolderExists で存在確認をしておくと安全です。

Dim FSO
Dim FolderPath

FolderPath = "C:\hogehoge"

Set FSO = WScript.CreateObject("Scripting.FileSystemObject")

If FSO.FolderExists(FolderPath) Then
    MsgBox "フォルダはすでに存在します。"
Else
    FSO.CreateFolder(FolderPath)
    MsgBox "フォルダを作成しました。"
End If

FolderExists でフォルダの存在を確認し、存在しない場合だけ CreateFolder を実行しています。

2.日付付きのフォルダを作成する

次に、フォルダ名に日付を付けて作成してみます。

例えば、以下のようなフォルダを作成します。

C:\hogehoge
└─ hogehoge_20260909

VBSでは YearMonthDay を利用すると、現在の日付を取得できます。

Dim FSO
Dim FolderPath
Dim FolderName
Dim DateString

DateString = Year(Date) & _
             Right("0" & Month(Date), 2) & _
             Right("0" & Day(Date), 2)

FolderName = "hogehoge_" & DateString
FolderPath = "C:\hogehoge\" & FolderName

Set FSO = WScript.CreateObject("Scripting.FileSystemObject")

If FSO.FolderExists(FolderPath) Then
    MsgBox FolderName & " はすでに存在します。"
Else
    FSO.CreateFolder(FolderPath)
    MsgBox FolderName & " を作成しました。"
End If

例えば2026年9月9日に実行した場合、以下のフォルダが作成されます。

C:\hogehoge\hogehoge_20260909

Right("0" & Month(Date), 2) のようにすることで、1桁の月や日を2桁にそろえています。

3.複数の子フォルダを一括で作成する

次に、親フォルダを作成したあと、その中に複数の子フォルダを作成してみます。

今回は以下のフォルダ構成を作成します。

C:\hogehoge
└─ hogehoge_20260909
   ├─ hogehoge1
   ├─ hogehoge2
   ├─ hogehoge3
   └─ hogehoge4

使用するVBSは以下です。

Dim FSO
Dim BasePath
Dim FolderName
Dim CreatePath
Dim ChildFolderPath
Dim DateString
Dim i

'日付をYYYYMMDD形式で取得
DateString = Year(Date) & _
             Right("0" & Month(Date), 2) & _
             Right("0" & Day(Date), 2)

'親フォルダの名前
FolderName = "hogehoge_" & DateString

'親フォルダのパス
BasePath = "C:\hogehoge"
CreatePath = BasePath & "\" & FolderName

Set FSO = WScript.CreateObject("Scripting.FileSystemObject")

'親フォルダが存在するか確認
If FSO.FolderExists(CreatePath) Then
    MsgBox FolderName & " はすでに存在します。"
Else

    '親フォルダを作成
    FSO.CreateFolder(CreatePath)

    '子フォルダを作成
    For i = 1 To 4
        ChildFolderPath = CreatePath & "\hogehoge" & i
        FSO.CreateFolder(ChildFolderPath)
    Next

    MsgBox FolderName & " を作成しました。"

End If

このVBSを実行すると、以下のようなフォルダが作成されます。

C:\hogehoge
└─ hogehoge_20260909
   ├─ hogehoge1
   ├─ hogehoge2
   ├─ hogehoge3
   └─ hogehoge4

For文を使用しているため、子フォルダを増やしたい場合も簡単に変更できます。

例えば、For i = 1 To 10 と変更すれば、hogehoge1hogehoge10 まで作成できます。

4.VBSでフォルダを作成する処理のポイント

今回使用した主な処理をまとめると以下のとおりです。

処理VBS
FileSystemObjectを作成WScript.CreateObject("Scripting.FileSystemObject")
フォルダの存在確認FolderExists
フォルダを作成CreateFolder
現在の日付を取得Date
年を取得Year(Date)
月を取得Month(Date)
日を取得Day(Date)

特にフォルダ作成では、CreateFolder を実行する前に FolderExists で存在確認しておくことが重要です。

5.まとめ

今回は、VBSを使ってフォルダを作成する方法を試してみました。

FileSystemObject を利用すると、VBSからフォルダの作成や存在確認ができます。

今回紹介した方法を応用すれば、

  • フォルダを自動作成する
  • 日付付きのフォルダを作成する
  • 複数の子フォルダを一括作成する
  • 定期的に決まったフォルダ構成を作成する

といった処理を自動化できます。

単純なフォルダ作成だけであればPowerShellでも簡単に実現できますが、既存のVBSやバッチファイルと組み合わせて利用したい場合には、VBSでフォルダ作成処理を実装する方法も便利です。