本記事ではファイルをリネーム処理をするバッチを紹介します。
目次
フォルダ内のファイル名を置換するバッチファイル
ファイル名を置換する名前が決まっていて、リネーマーを立ち上げるのが面倒なのでバッチを探してみました。
下記のコードをメモ帳に記載して、rename.vbsのように.vbsで保存。あとはクリックして実行するだけです。
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set FSO = CreateObject("Scripting.FileSystemObject")
ShowSubfolders FSO.GetFolder("置換対象のパス")
Set FSO = Nothing
Sub ShowSubFolders(Folder)
For Each File in Folder.Files
Fname = File.name
Dim fs
Dim fn
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set fn = fs.GetFile(Folder & "\" & Fname)
Dim rename
rename = Fname
rename = Replace(rename,"変更前の単語","変更後の単語")
fn.Name = rename
Set fs = Nothing
Set fn = Nothing
Next
For Each Subfolder in Folder.SubFolders
ShowSubFolders Subfolder
Next
End Sub
rename = Replace(rename,"変更前の単語","変更後の単語")
の部分を追加して、複数の文字置換も可能です。
VBScript ファイル名一括変更
VBScriptでファイル名から数字を一括で削除するサンプルです。 制限事項があり、ファイル名を変更した際に既に同一のファイル名があるとエラーとなります。 当方は新旧プロ…
クリックするだけで、すべてリネームとても便利です!!!
同名が存在する場合エラーになるので、それだけ注意
特定の名前に応じてリネームするバッチファイル
特定の名前に応じてリネームするバッチファイルです。
@echo off
setlocal enabledelayedexpansion
:StartProcess
if "%~1" equ "" goto EndProcess
:: ファイル名に "Android" という文字列が含まれる場合
echo %~n1 | find "Android" 1>nul
if not ERRORLEVEL 1 (
set ID=01_
goto Process
)
:: ファイル名に "iOS" という文字列が含まれる場合
echo %~n1 | find "iOS" 1>nul
if not ERRORLEVEL 1 (
set ID=02_
goto Process
)
:: ファイル名に "Windows Phone" という文字列が含まれる場合
echo %~n1 | find "Windows Phone" 1>nul
if not ERRORLEVEL 1 (
set ID=03_
goto Process
)
:: それ以外
set ID=00_
:Process
echo リネーム前のファイル名: "%~n1%~x1"
echo リネーム後のファイル名: "%ID%%~n1%~x1"
ren "%~n1%~x1" "%ID%%~n1%~x1"
:NextProcess
shift
goto StartProcess
:EndProcess
バッチファイルで、ファイル名に含まれる文字列によって処理を分岐する
なかなかニッチな用途かもですが、覚書。
Windowsのバージョンにかかわらず、BATは動いてくれるので便利です。
条件を分けることでもっといろいろできそうです。
まとめ
データ整理の時にBATは便利なので、ぜひ本記事を参考にBATをを使ってみてください。