Показать полную графическую версию : [решено] Пакетное переименование
Добрый день.
Не слишком силён в консоли.
Нужно переписывать имена файлов "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
Помогите, пожалуйста, решить проблему
Нужно переписывать имена файлов »
Видимо, NAME - произвольный набор символов? И ещё, "NAME " - с пробелом в конце, именно так, или вместо пробела, может быть что-то ещё?
Видимо, NAME - произвольный набор символов? »
Всё верно.
И ещё, "NAME " - с пробелом в конце, именно так, или вместо пробела, может быть что-то ещё? »
Для второго случая - пробел.
Всё верно. »
Примерно так:
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)}
}
}
}
}
Примерно так:
powershell »
Круто!
А можно CMD, чтобы не разрешать навсегда выполнение скриптов в PS?
чтобы не разрешать навсегда выполнение скриптов в 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).
megaloman
18-11-2020, 16:32
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, Супер! То что надо! Спасибо!
".SL.wav" ".Ls.wav"
Что-то это мне напоминает :)…
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.