1 (изменено: Sundr, 2018-07-24 19:26:05)

Тема: CMD/BAT: Переименование аудио файлов

Добрый день.

Прошу сделать батник для переименования определенных шести "wav" файлов, расположенных в папке. Батнику необходимо работать в любой директории.
В папке лежат шесть  аудио файлов, формата "wav". Эти шесть моно файлов соответсвуют многоканальным каналам и им присвоены названия по следующему шаблону:
[ Наименование канала.Сокращенная аббревиатура канала. Расширение файла. ] 
Name channel.L.wav
Name channel.R.wav
Name channel.C.wav
Name channel.LFE.wav
Name channel.SL.wav
Name channel.SR.wav
Наименование каналов(Name channel) может быть любым, а постоянным всегда остаются аббревиатуры в конце наименования.Перед аббревиатурой всегда идет точка.
Вот список всех аббревиатур: "L", "R", "С", "LFE", "SL", "SR"
Примечание: Могут быть также ситуации, что в папке будет лежать намного больше wav файлов , а не ровно шесть штук. Необходимо чтобы батник понимал такую ситуацию и брал в работу только файлы с аббревиатурой и игнорировал другие wav файлы .

Задача стоит переименовать данные шесть файлов и присвоить им четкую нумерацию от 1 до 6. После каждой цифры идет точка. После переименования каналов , наименования файлов будут выглядеть так:
1.Name channel.L.wav
2.Name channel.R.wav
3.Name channel.C.wav
4.Name channel.LFE.wav
5.Name channel.SL.wav
6.Name channel.SR.wav
Сами имена файлов не нужно менять, к ним только добавляются цифры и точка после цифры.
Нумерация необходима именно в таком порядке,как выше написано, т.е. канал "L" это всегда первый номер, канал "R" это всегда второй номер и т.д.

Пожалуйста сделайте.

2 (изменено: alexii, 2018-07-24 14:26:30)

Re: CMD/BAT: Переименование аудио файлов

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
	`2^>nul dir /a:-d /b "*.L.wav"`
) do (
	set sName=%%~i
	echo Found first file [!sName!] in collection.
	
	set sPartName=!sName:.L.wav=!
	echo Partial name is: [!sPartName!].
	
	set /a bExists = 1

	for %%j in (".R.wav" ".C.wav" ".LFE.wav" ".SL.wav" ".SR.wav") do if not exist "!sPartName!%%~j" (
		set /a bExists = 0
		echo Collection file [!sPartName!%%~j] not found.
	)
	
	if !bExists! equ 1 (
		echo All collection files found.
		set /a iCount = 0
		
		for %%j in (".L.wav" ".R.wav" ".C.wav" ".LFE.wav" ".SL.wav" ".SR.wav") do (
			set /a iCount += 1
			echo Rename file [!sPartName!%%~j] into [!iCount!.!sPartName!%%~j].
			ren "!sPartName!%%~j" "!iCount!.!sPartName!%%~j"
		)
	) else (
		echo Not all collection files found.
	)

	echo.
)

endlocal
exit /b 0
+ Возможный результат работы

https://i.imgur.com/WmO4cnJ.png

3 (изменено: Sundr, 2018-07-24 23:43:40)

Re: CMD/BAT: Переименование аудио файлов

Приветствую всех!
stealzy, хорошо учту. Я поправил в тексте.

alexii, спасибо вам огромное! Все работает отлично.

alexii, в продолжение данной темы. Будьте добры, сделайте пожалуйста батник с обратной операцией,
Когда у нас уже есть переименованные шесть файлов в папке, с присвоенными номерами от 1 до 6 и нам требуется наоборот избавится от этих номеров впереди и привести к первоначальному наименованию этих шести файлов, с аббревиатурой. Все также, только теперь удаляем номера с точкой из названия.

4 (изменено: Sundr, 2018-07-28 16:41:04)

Re: CMD/BAT: Переименование аудио файлов

Кто-нибудь может помочь сделать батник с обратной операцией? Чтобы  окончательно закрыть данную тему, напишите пожалуйста батник который также будет реагировать
только на входящие шесть "wav" файлов в папке, с аббревиатурами в названии: "L", "R", "С", "LFE", "SL", "SR". Батнику  необходимо убирать цифры из названия, впереди стоящие.
После каждой цифры идет точка.Цифры идут в таком формате : "1."  "2." "3." "4." "5." "6."

5

Re: CMD/BAT: Переименование аудио файлов

Вам сюда:
http://forum.script-coding.com/viewforum.php?id=28