2015-04-19

VBS を使ったファイル名置換スクリプト

前々から書こうと思っていたのを (気が向いたので) やっと書いた。



【 準備 】
下の内容を、適当なテキストエディタに貼り、拡張子を VBS にして保存してあげる。
スクリプト内部で、strReplaceRules に全角英数字を半角英数字に置換するように記述してあるので、必要に応じてルールを追加するといい。
strReplaceRules の上にあるルール (下のコードだと「全角の A (A) を半角の A (A)」から。コードは「Array("A", "A")」。) から順に処理されるので、自身で追加する場合には、上の方に追加することをオススメする。

【 使い方 】
ファイル名置換したいファイルを保存した VBS ファイルにドラッグ&ドロップしてあげればオシマイ。

' ファイル名置換スクリプト
' Copyright (C) 2015 tag. All rights reserved.

Option Explicit

' 置換ルールの定義 (上から順に処理)
Dim strReplaceRules
strReplaceRules = Array( _
Array("A", "A"), _
Array("B", "B"), _
Array("C", "C"), _
Array("D", "D"), _
Array("E", "E"), _
Array("F", "F"), _
Array("G", "G"), _
Array("H", "H"), _
Array("I", "I"), _
Array("J", "J"), _
Array("K", "K"), _
Array("L", "L"), _
Array("M", "M"), _
Array("N", "N"), _
Array("O", "O"), _
Array("P", "P"), _
Array("Q", "Q"), _
Array("R", "R"), _
Array("S", "S"), _
Array("T", "T"), _
Array("U", "U"), _
Array("V", "V"), _
Array("W", "W"), _
Array("X", "X"), _
Array("Y", "Y"), _
Array("Z", "Z"), _
Array("a", "a"), _
Array("b", "b"), _
Array("c", "c"), _
Array("d", "d"), _
Array("e", "e"), _
Array("f", "f"), _
Array("g", "g"), _
Array("h", "h"), _
Array("i", "i"), _
Array("j", "j"), _
Array("k", "k"), _
Array("l", "l"), _
Array("m", "m"), _
Array("n", "n"), _
Array("o", "o"), _
Array("p", "p"), _
Array("q", "q"), _
Array("r", "r"), _
Array("s", "s"), _
Array("t", "t"), _
Array("u", "u"), _
Array("v", "v"), _
Array("w", "w"), _
Array("x", "x"), _
Array("y", "y"), _
Array("z", "z"), _
Array("0", "0"), _
Array("1", "1"), _
Array("2", "2"), _
Array("3", "3"), _
Array("4", "4"), _
Array("5", "5"), _
Array("6", "6"), _
Array("7", "7"), _
Array("8", "8"), _
Array("9", "9"), _
Array(" ", " "))

' FSO の取得
Dim objFso, strTargetFile
Set objFso = CreateObject("Scripting.FileSystemObject")

' 引数の取得
Dim objArgs, idxArgs
Set objArgs = WScript.Arguments

' 引数毎の処理
For idxArgs = 0 To objArgs.Count - 1
  ' ファイルの取得
  Set strTargetFile = objFso.GetFile(WScript.Arguments(idxArgs))

  ' 置換
  Dim i
  For i = LBound(strReplaceRules) To UBound(strReplaceRules)
    If InStr(strTargetFile.Name, strReplaceRules(i)(0)) > 0 Then
      strTargetFile.Name = Replace(strTargetFile.Name, strReplaceRules(i)(0), strReplaceRules(i)(1))
    End If
  Next
Next

' 終了処理
Set strReplaceRules = Nothing
Set objFso = Nothing
Set strTargetFile = Nothing
Set objArgs = Nothing








オマケ


コマンドプロンプト (バッチファイル) から起動するバージョン。説明は省略。

:: ファイル名置換スクリプト (ファイル取り込み部)
:: Copyright (C) 2015 tag. All rights reserved.

@echo off

cd "%~dp0"

set VBSFilePath="%~dp0renamer.vbs"

:start
if "%~1"=="" goto processend
if not "%~x1" == ".mp4" goto next

:process
@echo ==================================================
@echo target: "%~1"
CScript %VBSFilePath% "%~1"

:next
shift
goto start

:processend
::pause > nul


' ファイル名置換スクリプト (replace.vbs)
' Copyright (C) 2015 tag. All rights reserved.
' 要「ファイル名置換スクリプト (ファイル取り込み部)」

Option Explicit

' 置換ルールの定義
Dim strReplaceRules
strReplaceRules = Array( _
Array("A", "A"), _
Array("B", "B"), _
Array("C", "C"), _
Array("D", "D"), _
Array("E", "E"), _
Array("F", "F"), _
Array("G", "G"), _
Array("H", "H"), _
Array("I", "I"), _
Array("J", "J"), _
Array("K", "K"), _
Array("L", "L"), _
Array("M", "M"), _
Array("N", "N"), _
Array("O", "O"), _
Array("P", "P"), _
Array("Q", "Q"), _
Array("R", "R"), _
Array("S", "S"), _
Array("T", "T"), _
Array("U", "U"), _
Array("V", "V"), _
Array("W", "W"), _
Array("X", "X"), _
Array("Y", "Y"), _
Array("Z", "Z"), _
Array("a", "a"), _
Array("b", "b"), _
Array("c", "c"), _
Array("d", "d"), _
Array("e", "e"), _
Array("f", "f"), _
Array("g", "g"), _
Array("h", "h"), _
Array("i", "i"), _
Array("j", "j"), _
Array("k", "k"), _
Array("l", "l"), _
Array("m", "m"), _
Array("n", "n"), _
Array("o", "o"), _
Array("p", "p"), _
Array("q", "q"), _
Array("r", "r"), _
Array("s", "s"), _
Array("t", "t"), _
Array("u", "u"), _
Array("v", "v"), _
Array("w", "w"), _
Array("x", "x"), _
Array("y", "y"), _
Array("z", "z"), _
Array("0", "0"), _
Array("1", "1"), _
Array("2", "2"), _
Array("3", "3"), _
Array("4", "4"), _
Array("5", "5"), _
Array("6", "6"), _
Array("7", "7"), _
Array("8", "8"), _
Array("9", "9"), _
Array(" ", " "))

' FSO の取得
Dim objFso, strTargetFile
Set objFso = CreateObject("Scripting.FileSystemObject")

' ファイルの取得
Set strTargetFile = objFso.GetFile(WScript.Arguments(0))

' 処理前のファイル名
WScript.echo "Rename (before): " & strTargetFile.Name

' 置換
Dim i
For i = LBound(strReplaceRules) To UBound(strReplaceRules)
  If InStr(strTargetFile.Name, strReplaceRules(i)(0)) > 0 Then
    strTargetFile.Name = Replace(strTargetFile.Name, strReplaceRules(i)(0), strReplaceRules(i)(1))
  End If
Next

' 処理後のファイル名
WScript.echo "Rename (after) : " & strTargetFile.Name

' 終了処理
Set strReplaceRules = Nothing
Set objFso = Nothing
Set strTargetFile = Nothing


0 件のコメント :

コメントを投稿