Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Пакетное переименование (http://forum.oszone.net/showthread.php?t=347062)

sasakot 18-11-2020 12:03 2940317

Пакетное переименование
 
Добрый день.

Не слишком силён в консоли.
Нужно переписывать имена файлов "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

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

YuS_2 18-11-2020 13:33 2940327

Цитата:

Цитата sasakot
Нужно переписывать имена файлов »

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

sasakot 18-11-2020 13:51 2940334

Цитата:

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

Всё верно.

Цитата:

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

Для второго случая - пробел.

YuS_2 18-11-2020 13:55 2940336

Цитата:

Цитата 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)}
                        }
                }
        }
}


sasakot 18-11-2020 14:36 2940340

Цитата:

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

Круто!

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

YuS_2 18-11-2020 14:42 2940342

Цитата:

Цитата 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).

sasakot 18-11-2020 14:54 2940343

Спасибо.

megaloman 18-11-2020 16:32 2940359

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


sasakot 18-11-2020 19:51 2940367

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

Iska 18-11-2020 20:29 2940371

Цитата:

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


Время: 13:34.

Время: 13:34.
© OSzone.net 2001-