Home » WSH・Windows Script Hostの使い方 » ファイル名に連番を振るVBScript

同じようなファイルの名前に、連番を振る必要があり(久しぶりに)VBScriptをいじりました。

[スポンサードリンク]

ファイル名に連番を振るサンプルスクリプト

以下のコードを含んだ、拡張子「.vbs」のファイルを用意し、連番を振りたいファイルをその.vbsファイルにドラッグアンドドロップすると
「連番の最初の整数を入力してください。」
と表示されたインプットボックスが表示され、整数を入力すると
  abc-001
  abc-002
  abc-003
といった形式で連番が振られます。「連番の最初の整数を入力してください。」インプットボックスに、例えば「6」を入力したときには
  abc-006
  abc-007
  abc-008
のような連番になります。

Option Explicit


Dim prefix
prefix = "abc-" ' 連番の前につけるプレフィックス


Dim args
Dim num1st
With WScript
  Set args = .Arguments

  If args.Count < 1 Then .Quit
  num1st = InputBox("連番の最初の整数を入力してください。")

  If Len(num1st) = 0 Then .Quit
  If Not IsNumeric(num1st) Then .Quit
End With


Dim fso 'Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")

On Error Resume Next

Dim f 'Scripting.File
Dim f_name
Dim cnt
For Each f_name in args

  set f = fso.GetFile(f_name)
  f.Name = _
      prefix & Right("00" & (num1st + cnt), 3) & _
      "." & fso.GetExtensionName(f.Name)
  cnt = cnt + 1

  With Err
    Select Case .Number
      Case 0
      Case Else
        MsgBox .Description & .Number
        .Clear
    End Select
  End With

Next

Set f = Nothing
Set fso = Nothing

サンプルスクリプトで行っている処理内容

連番の前の部分については、スクリプトファイルの中に書いておく形にしています。

Dim prefix
prefix = "abc-" ' 連番の前につけるプレフィックス

連番を振りたいファイルがドラッグアンドドロップされたら、「連番の最初の整数を入力してください。」インプットボックスを表示して、変数num1stに数値を格納しておきます。入力されたのが数値でない場合には終了します。

Dim args
Dim num1st
With WScript
  Set args = .Arguments

  If args.Count < 1 Then .Quit
  num1st = InputBox("連番の最初の整数を入力してください。")

  If Len(num1st) = 0 Then .Quit
  If Not IsNumeric(num1st) Then .Quit
End With

このチェックはもっと細かくできますが、自分が使うツールなのでこの程度で済ませています。

この後が実際に連番を振る処理です。
ドラッグアンドドロップされたファイルをFor Each~Nextループで順番に処理します。

Dim fso	'Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")

On Error Resume Next

Dim f	'Scripting.File
Dim f_name
Dim cnt
For Each f_name in args

For Each~Nextループ内では、GetFileメソッドでScripting.Fileオブジェクトを取得して、変数prefixに代入した文字列の後ろに連番を付加しています。

  set f = fso.GetFile(f_name)
  f.Name = _
      prefix & Right("00" & (num1st + cnt), 3) & _
      "." & fso.GetExtensionName(f.Name) 
  cnt = cnt + 1

連番部分はゼロパディングするために、数値の前に「00」を付加しておいてからRight関数で右3文字を取得しています。この、

      prefix & Right("00" & (num1st + cnt), 3) & _

を以下の形にすれば、

      prefix & Right("000" & (num1st + cnt), 4) & _

  abc-0001
  abc-0002
  abc-0003
といった連番になり、以下のように指定したときには、

      prefix & Right("0" & (num1st + cnt), 2) & _

  abc-01
  abc-02
  abc-03
という連番になります。

最終更新日時:2025-01-08 08:55

[スポンサードリンク]

Home » WSH・Windows Script Hostの使い方 » ファイル名に連番を振るVBScript

「WSH・Windows Script Hostの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.