0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【batch】mp3ファイルのナンバリング

Last updated at Posted at 2022-08-01

カーオーディオでUSBを使って音楽を聴く場合、
曲順がぐちゃぐちゃになってることが結構ある・・・:joy:

プレイリストをitunesで*.m3uでエクスポートし、
メルセデスのCOMANDシステムに入力したが、
プレイリストの曲順をうまく認識せず・・・:joy:
ということで、batでmp3ファイルに直接ナンバリングすることに

私は3曲毎にジングルを入れる変わった聞き方をしてますので、
ナンバリングと同時に3曲毎にジングルも入れるbatを設計。
999曲までは下記で対応できる。

フォルダ、データ構成は下図の通り(jingleフォルダにジングル10曲を用意)
number1.png

numbering.bat
@echo off
setlocal enabledelayedexpansion
rem タイトル用曲順
set num=0
rem 3曲毎にジングル入れ
set remainder=3
rem ジングル選択カウンタ
set jno=0
rem CMループ用カウンタ
set CMcount=0
rem 全体ループカウンタ
set count=0
rem タイトル
set title=0

erase test.log

for %%f in (*.mp3) do (
set /a num=CMcount+count

	if !remainder! equ 0 (
		rem CMカウンタ+1
		set /a CMcount=CMcount+1
		set /a jno=jno+1
		rem CMコピー
		set /a title=num
		rem 桁数調整
		if 99 geq !title! ( 
			if 9 geq !title! (
				set title2=00!title!
			) else (
				set title2=0!title!
			)
		) else (
			set title2=!title!
		)

		rem ---------------------------------------
		echo CMtitle=!title2! --!count!-->>test.log
		copy jingle\jingle_!jno!.mp3 .
		ren jingle_!jno!.mp3 !title2!_jingle_!jno!.mp3

		rem 曲名ナンバリング
		set /a title=num+1
		rem 桁数調整
		if 99 geq !title! ( 
			if 9 geq !title! (
				set title2=00!title!
			) else (
				set title2=0!title!
			)
		) else (
			set title2=!title!
		)
		rem ---------------------------------------
		echo 曲title=!title2! !count!>>test.log
		ren "%%f" !title2!_"%%~nf".mp3

	) else (
		rem 曲名ナンバリング
		set /a title=count+CMcount

		rem 桁数調整
		if 99 geq !title! ( 
			if 9 geq !title! (
				set title2=00!title!
			) else (
				set title2=0!title!
			)
		) else (
			set title2=!title!
		)
		rem ---------------------------------------
		
		echo 曲title=!title2! !count!>>test.log
		ren "%%f" !title2!_"%%~nf".mp3

	)

set /a count=count+1
set /a num=num+1
set /a remainder=count%%3
	rem ジングル10曲をループ
	if !jno! equ 10 (
		set /a jno=0
	) else (
		set /a jno=jno
	)

)
endlocal
pause

上記を実行し、下図のように曲の頭にナンバリングしてあげることでCOMANDシステムでも認識可。かつ、ジングルも3曲毎にローテで入っている
number2.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?