前に作った、「ファイル名を連番付で、リネーム する」というのをちょっと改良して、ファイル名の文字 列を一括置換するスクリプトを作りました。


【実行画面】



【実行例】(Pyxisでの)

入力欄に「00,abc_0」と入力したとして、
 → 


***** RepName.vbs *****

'////////////////////////////////////////////////////////////////////
'//
'//     ファイル名一部置換リネーマ                        Shimizu
'//
'//                                                     2005年7月21日
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, newName
Dim myArr


Do

    strRN = InputBox("ファイル名の一部を置換します。" &_
        vbCr & vbCr &_
        "入力欄に" & vbCr & vbCr &_
        "  置換前(何を),置換後(何に)" & vbCr & vbCr &_
        "と、置換前、置換後の文字列をカンマで区切って入力してください。", _
        "ファイル名一部置換処理")

    If strRN="" Then 
        '//キャンセルまたは、なにも入力されなかったときはなにもしない
        WScript.Quit
    Else
        '//入力された内容から配列を作る
        myArr = Split(strRN, ",")
        
        '//入力内用の妥当性をチェック
        If UBound(myArr) <> 1 Then
            MsgBox "入力された内容が適切ではありません。",48
        Else
            Exit Do
        End If

    End If
    
Loop


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

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

Dim i
For i = 0 to (NoFiles-1)

    '//新しい名前を設定
    newName = Replace(args.Item(i), myArr(0), myArr(1))
    
    '//同名のファイルがある場合は、そこで中止
    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でのランチャー設定例を、次に示します。
 下の例では、"RepName.vbs"は、"c:\Script\wsh"内にあります。


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



戻る