同じようなファイルの名前に、連番を振る必要があり(久しぶりに)VBScriptをいじりました。
ファイル名に連番を振るサンプルスクリプト
以下のコードを含んだ、拡張子「.vbs」のファイルを用意し、連番を振りたいファイルをその.vbsファイルにドラッグアンドドロップすると
「連番の最初の整数を入力してください。」
と表示されたインプットボックスが表示され、整数を入力すると
abc-001
abc-002
abc-003
といった形式で連番が振られます。「連番の最初の整数を入力してください。」インプットボックスに、例えば「6」を入力したときには
abc-006
abc-007
abc-008
のような連番になります。
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 = NothingSet 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
- Newer:Photoshopで画像が白黒になった
- Older:Windows11でフォントをインストールする
Home » WSH・Windows Script Hostの使い方 » ファイル名に連番を振るVBScript