メニュー

Windowsバッチ│フォルダ内のファイル名を置換するバッチファイル

本記事ではファイルをリネーム処理をするバッチを紹介します。

海外でフリーランスをしているテクニカルアーティスト
ゲーム開発・映像制作・WEB制作等を請け負っています。
当ブログは作業効率化のための技術ブログです。

目次

フォルダ内のファイル名を置換するバッチファイル

ファイル名を置換する名前が決まっていて、リネーマーを立ち上げるのが面倒なのでバッチを探してみました。
下記のコードをメモ帳に記載して、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,"変更前の単語","変更後の単語")の部分を追加して、複数の文字置換も可能です。

クリックするだけで、すべてリネームとても便利です!!!

同名が存在する場合エラーになるので、それだけ注意

特定の名前に応じてリネームするバッチファイル

特定の名前に応じてリネームするバッチファイルです。

@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をを使ってみてください。

全記事一覧

  • URLをコピーしました!
目次