Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Пакетное переименование

Ответить
Настройки темы
CMD/BAT - [решено] Пакетное переименование

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день.

Не слишком силён в консоли.
Нужно переписывать имена файлов "NAME.XX.wav" в "NAME.YY.wav", где
XX - YY
SL - Ls
SR - Rs
SC - Cs
BL - Lsr
BR - Rsr

И вторая задача: "NAME xxxxx.wav" в "NAME.YY.wav", где
ххххххх - YY
Left Surround - Ls
Right Surround - Rs

Помогите, пожалуйста, решить проблему

Отправлено: 12:03, 18-11-2020

 

Аватара для YuS_2

Ветеран


Contributor


Сообщения: 731
Благодарности: 317

Профиль | Отправить PM | Цитировать


Цитата sasakot:
Нужно переписывать имена файлов »
Видимо, NAME - произвольный набор символов? И ещё, "NAME " - с пробелом в конце, именно так, или вместо пробела, может быть что-то ещё?

-------
scio me nihil scire


Отправлено: 13:33, 18-11-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
Видимо, NAME - произвольный набор символов? »
Всё верно.

Цитата YuS_2:
И ещё, "NAME " - с пробелом в конце, именно так, или вместо пробела, может быть что-то ещё? »
Для второго случая - пробел.

Отправлено: 13:51, 18-11-2020 | #3


Аватара для YuS_2

Ветеран


Contributor


Сообщения: 731
Благодарности: 317

Профиль | Отправить PM | Цитировать


Цитата sasakot:
Всё верно. »
Примерно так:
powershell
Код: Выделить весь код
$fld = '.\TEST'
$arr = 'SL$','SR$','SC$','BL$','BR$',' Left Surround$',' Right Surround$'

dir $fld -filt '*.wav'|%{
	$x = $_
	foreach ($item in $arr){
		if ($x.basename -match $item){
			switch ($matches[0]){
			 'SL'{ren $x.fullname $(($x.basename -replace 'SL','Ls') + $x.extension)}
			 'SR'{ren $x.fullname $(($x.basename -replace 'SR','Rs') + $x.extension)}
			 'SC'{ren $x.fullname $(($x.basename -replace 'SC','Cs') + $x.extension)}
			 'BL'{ren $x.fullname $(($x.basename -replace 'BL','Lsr') + $x.extension)}
			 'BR'{ren $x.fullname $(($x.basename -replace 'BR','Rsr') + $x.extension)}
			 ' Left Surround'{ren $x.fullname $(($x.basename -replace ' Left Surround','.Ls') + $x.extension)}
			 ' Right Surround'{ren $x.fullname $(($x.basename -replace ' Right Surround','.Rs') + $x.extension)}
			}
		}
	}
}

-------
scio me nihil scire

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:55, 18-11-2020 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
Примерно так:
powershell »
Круто!

А можно CMD, чтобы не разрешать навсегда выполнение скриптов в PS?

Отправлено: 14:36, 18-11-2020 | #5


Аватара для YuS_2

Ветеран


Contributor


Сообщения: 731
Благодарности: 317

Профиль | Отправить PM | Цитировать


Цитата sasakot:
чтобы не разрешать навсегда выполнение скриптов в PS? »
А в чем проблема, чтобы разрешить? Сейчас powershell уже заменил cmd в качестве стандартной командной оболочки...
Но если очень хочется, то сохранить скрипт в отдельном файле в кодировке UTF8, например, script.ps1 и запускать так:
Код: Выделить весь код
@echo off
echo Выполняем...
powershell  -ex bypass .\script.ps1
echo Готово.
pause
А если хочется совсем без скриптовых файлов, то можно и так:
Код: Выделить весь код
<# :: 
@echo off
>nul chcp 866
set "var=%~f0"
powershell -ex bypass -c "&{[scriptblock]::create((gc -lit $env:var -enc OEM) -join [char]10).invoke()}"
pause&exit /b
#>
$fld = '.\TEST'
$arr = 'SL$','SR$','SC$','BL$','BR$',' Left Surround$',' Right Surround$'

dir $fld -filt '*.wav'|%{
	$x = $_
	foreach ($item in $arr){
		if ($x.basename -match $item){
			switch ($matches[0]){
			 'SL'{ren $x.fullname $(($x.basename -replace 'SL','Ls') + $x.extension)}
			 'SR'{ren $x.fullname $(($x.basename -replace 'SR','Rs') + $x.extension)}
			 'SC'{ren $x.fullname $(($x.basename -replace 'SC','Cs') + $x.extension)}
			 'BL'{ren $x.fullname $(($x.basename -replace 'BL','Lsr') + $x.extension)}
			 'BR'{ren $x.fullname $(($x.basename -replace 'BR','Rsr') + $x.extension)}
			 ' Left Surround'{ren $x.fullname $(($x.basename -replace ' Left Surround','.Ls') + $x.extension)}
			 ' Right Surround'{ren $x.fullname $(($x.basename -replace ' Right Surround','.Rs') + $x.extension)}
			}
		}
	}
}
- батник лучше сохранять в кодировке OEM (CP866).

-------
scio me nihil scire


Последний раз редактировалось YuS_2, 18-11-2020 в 14:48.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:42, 18-11-2020 | #6


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо.

Отправлено: 14:54, 18-11-2020 | #7


Ветеран


Contributor


Сообщения: 2151
Благодарности: 1321

Профиль | Отправить PM | Цитировать


sasakot, CMD, сохранить в 1251 кодировке
Код: Выделить весь код
@Echo Off
	>nul Chcp 1251
	Set "BoxIn=Z:\Box_In\Мои медиа файлы"

	Call :MyRen ".SL.wav" ".Ls.wav"
	Call :MyRen ".SR.wav" ".Rs.wav"   
	Call :MyRen ".SC.wav" ".Cs.wav"   
	Call :MyRen ".BL.wav" ".Lsr.wav"   
	Call :MyRen ".BR.wav" ".Rsr.wav"   
	Call :MyRen " Left Surroun.wav" ".Ls.wav"
	Call :MyRen " Right Surround.wav" ".Rs.wav"   
Exit /B

:MyRen
	For %%f In ("%BoxIn%\*%~1") Do (Set "N=%%~nxf" &Call Ren "%%f" "%%N:%~1=%~2%%")
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 18-11-2020 в 16:38.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:32, 18-11-2020 | #8


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, Супер! То что надо! Спасибо!

Отправлено: 19:51, 18-11-2020 | #9


Ветеран


Contributor


Сообщения: 26426
Благодарности: 7685

Профиль | Отправить PM | Цитировать


Цитата:
".SL.wav" ".Ls.wav"
Что-то это мне напоминает

Отправлено: 20:29, 18-11-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Пакетное переименование

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Пакетное переименование файлов в случайное имя brosafari Скриптовые языки администрирования Windows 3 17-01-2017 21:29
CMD/BAT - Пакетное переименование файлов по маске Viktor99 Скриптовые языки администрирования Windows 1 15-08-2016 23:25
CMD/BAT - [решено] Пакетное переименование файлов ArsenBespalov Скриптовые языки администрирования Windows 9 11-08-2016 03:56
[решено] Пакетное переименование ярлыков SimSim Хочу все знать 9 24-10-2012 10:44
CMD/BAT - [решено] Пакетное переименование с использованием алфавитного счётчика kotik147 Скриптовые языки администрирования Windows 6 13-05-2010 00:03




 
Переход