ファイル名をパラメータとして引き継いで、連番付で、まとめてリネーム します。

 前のスクリプトを機能拡張したのもです。


【実行画面】



 「先頭文字列」のほかに、「連番部分の桁数」、「開始番号」、 「末尾文字列」を指定できるようになりなした。

インプットボックスに、
先頭文字列[,連番部分の桁数][,開始番号] [,末尾文字列]
で、指定します。拡張子は、そのまま保持されます。
 [ ] 内は、省略可能です。インプットボックスに、"," だけを入力すると、 拡張子を除く部分が、"001" から始まる、3桁の数字だけになります。

***** reName2.vbs *****

'////////////////////////////////////////////////////////////////////
'//
'//     ファイル連番付リネーマ                              Shimizu
'//
'//                                                     2003年11月1日
Option Explicit


Dim args
Dim NoFiles


Set args = Wscript.Arguments
NoFiles = args.Count

If NoFiles = 0 then
    '//ファイル名が渡されていなければ、終了
    MsgBox "ファイルが指定されていません。",48
    WScript.Quit
Else 
    '//名前連番付一括変換
    Call Rename
End If


'///////////////////////////////////////
'//
'//     ファイル名連番付一括変換
'//
Sub Rename

Dim objFS, objFile
Dim strRN, fStr, mStr, eStr, fExt, newName
Dim myArr
Dim keta, sNo


Do

    strRN = InputBox("ファイルを連番付で改名します。" & vbCr &_
        "改名方法を、" & vbCr & vbCr &_
        "先頭文字列[,連番部分桁数(3)]" & vbCr &_
        "  [,開始番号(1)][,末尾文字列]" & vbCr & vbCr &_
        "(括弧内の数字は、ディフォルト値)" & vbCr &_
        "で、指定してください。" & vbCr &_
        "拡張子は、そのまま保持されます。","ファイル連番リネーマ")

    If strRN="" Then 
        '//キャンセルまたは、なにも入力されなかったときはなにもしない
        WScript.Quit
    Else
        '//改名方法を初期化
        fStr = ""           '//先頭文字列
        keta = 3            '//桁数
        sNo = 1             '//開始番号
        eStr = ""           '//末尾文字列
        
        '//入力内用から改名方法を作成
        myArr = Split(strRN,",")
        fStr = myArr(0)
        If UBound(myArr) > 0 Then
            If Not myArr(1) = "" Then
                keta = myArr(1)
            End If
        End If
        If UBound(myArr) > 1 Then
            If Not myArr(2) = "" Then
                sNo = myArr(2)
            End If
        End If
        If UBound(myArr) > 2 Then
            eStr = myArr(3)
        End If
        
        '//入力内用の妥当性をチェック
        If IsNumeric(keta) = False Then
            MsgBox "入力された内容が適切ではありません。",48
        ElseIf IsNumeric(sNo) = False Then
            MsgBox "入力された内容が適切ではありません。",48
        ElseIf keta < 0 Or sNo <0 Then
            MsgBox "入力された内容が適切ではありません。",48
        ElseIf 10^keta - sNo - args.Count < 0 Then
            MsgBox "桁が足りません。",48
        Else
            Exit Do
        End If

    End If
    
Loop


'////////////////////////
'// 名前変換処理

'//ファイルシステムオブジェクトを使用
Set objFS = CreateObject("Scripting.FileSystemObject")

Dim i
For i = 0 to (NoFiles-1)
    '//新しい名前の連番部分作成
    mStr = Right(CStr(FormatNumber((i+sNo)/10^keta,keta)),keta)

    '//拡張子を調べる
    fExt = objFS.GetExtensionName(args.Item(i))

    '//新しい名前を設定
    newName = fStr & mStr & eStr & "." & fExt
    
    '//同名のファイルがある場合は、そこで中止
    If objFS.FileExists(newName) Then
        MsgBox "同名のファイルがあるので、以降の処理を中止します。",48
        Exit For
    End If
    
    '//Fileオブジェクトを使用
    Set objFile = objFS.GetFile(args.Item(i))
    '//リネーム
    objFile.Name = newName
    
Next

MsgBox "ファイル名を変換しました。",64


End Sub
'//////////////////////////////////////


 一応、Pyxisでのランチャー設定例を、次に示します。
 下の例では、"reName2.vbs"は、"c:\Script\wsh"内にあります。


 Pyxis(シェアウェア)の入手先は、 ベクター内または、 〜Tom〜さんのページにて



戻る