このサイト・インストラクターのネタ帳では、FileSystemObjectを使った、ファイル名を一括変更するVBScriptをご紹介しています。
元のファイル名の先頭に指定した文字列を追加するスクリプトと、元のファイル名から指定した文字列を削除するスクリプトです。
もう一つ、元のファイル名の先頭から・左から指定した文字数を削除するスクリプトも、私はよく使っていますので、ご紹介しておきます。
先頭から指定した文字数を削除する
以下のスクリプトが、私の使っている元のファイル名の先頭から・左から指定した文字数を削除するVBScriptです。
Dim fso ' Scripting.FileSystemObject
Dim f ' Scripting.File
Dim args
Dim f_name
Dim del_cnt
With WScript
Set args = .Arguments
If args.Count < 1 Then .Quit
del_cnt = InputBox("ファイル名の左から削除する文字数を入力してください。")
If Len(del_cnt) = 0 OR Not IsNumeric(del_cnt) Then .Quit
End With
Set fso = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
For Each f_name in args
set f = fso.GetFile(f_name)
f.Name = Mid(f.Name, del_cnt + 1)
With Err
Select Case .Number
Case 58
MsgBox "同じ名前のファイルが存在するため処理を中断します。"
Exit For
Case 0
' エラーが発生しなかった場合は何もしない
Case Else
MsgBox .Description & .Number
.Clear
End Select
End With
Next
Set f = NothingSet fso = Nothing
上記のスクリプトを含んだテキストファイルの拡張子を「.vbs」にして保存しておいて、ファイル名を一括変更したいファイルを作成したVBSファイルにドラッグアンドドロップすると、
「ファイル名の左から削除する文字数を入力してください。」
というメッセージが表示され、指定された文字数分の文字が元のファイル名から削除される形で、ファイル名をまとめて変更できます。
サンプルスクリプトの解説
スクリプトの大きな流れはこれまでご紹介してきた、ファイル名を一括変更するスクリプトと同じです。
違っているのは、ファイル名を変更するFor Each ~ Next文の中の、
f.Name = Mid(f.Name, del_cnt + 1)
の部分です。
Mid関数を使って、元のファイル名から、インプットボックスで入力された数値に1加算した以降の文字に、ファイル名を変更しています。
文字数を指定する必要があるので、InputBoxで入力されたのが数字ではなかったときにも、処理を終了するようにしています。
If Len(del_cnt) = 0 OR Not IsNumeric(del_cnt) Then .Quit
- Newer:VBAで文字列と日付を比較するには-CDate関数
- Older:スライドのサイズを変更するPowerPointマクロ
Home » WSH・Windows Script Hostの使い方 » ファイル名を一括変更するVBScript-先頭・左から指定文字数削除