Single Post |
Topic: Групповое переименование |
Author |
Message |
Tol!k

|
Posted: Tue Mar 23, 2010 16:29 Post subject: |
|
|
Code: | @echo off &chcp 1251 >nul
setlocal enableextensions
for /f "usebackq tokens=1,2 delims=;" %%f in ("films.csv") do (
call :part "%%~g" "%%~f"
)
exit /b
:part
set "part="
for /f %%p in ('echo."%~n1" ^|ssed.exe -n -r -e s/.*([Cc][Dd]_?[1-9]^).*/\1/p') do set "part=%%p"
if "%part%"=="" for /f %%p in ('echo."%~n1" ^|ssed.exe -n -r -e s/.*([Dd]is[ck]_?^)([1-9]^).*/cd\2/p') do set "part=%%p"
if "%part%"=="" for /f %%p in ('echo."%~n1" ^|ssed.exe -n -r -e s/.*([Pp]art_?^)([1-9]^).*/cd\2/p') do set "part=%%p"
if "%part%"=="" for /f "delims=" %%p in ('echo."%~n1" ^|ssed.exe -n -r -e s/.*([1-9][0-9]?\s?серия^).*/\1/p') do set "part=%%p"
if "%~x2"==".avi" (set "name=%~n2") else set "name=%~2"
set "name=%name:"=''%"
set "name=%name:/= - %"
set "name=%name::= - %"
set "name=%name: = %"
set "name=%name:<={%"
set "name=%name:>=}%"
set "name=%name:?=%"
::эмуляция
if not "%part%"=="" (echo ren "%~1" "%name% %part%%~x1" ^|^|ren "%~1" "%name% %part%.cd2%~x1">> _2.cmd.txt)
if "%part%"=="" (echo ren "%~1" "%name%%~x1" ^|^|ren "%~1" "%name%.cd2%~x1">> _2.cmd.txt)
echo.>> _2.cmd.txt
::прожиг
rem if not "%part%"=="" (ren "%~1" "%name% %part%%~x1" ||(echo."%name% %part%%~x1" >>_конфликт.txt &ren "%~1" "%name% %part%.cd2%~x1"))
rem if "%part%"=="" (ren "%~1" "%name%%~x1" ||(echo."%name%%~x1" >>_конфликт.txt &ren "%~1" "%name%.cd2%~x1"))
goto :eof
Версия 2
Используется super-sed http://sed.sourceforge.net/grabbag/ssed/sed-3.62.zip, также должно работать и с GNU sed.
В старом имени ищется CD№ и добавляется к новому имени.
Если не удаётся переименовать в "Новое имя.ext", будет попытка переименовать в "Новое имя.cd2.ext"
|
Last edited by Tol!k on Wed Mar 24, 2010 12:01; edited 3 times in total |
|
|
|
 |
|
Powered by phpBB © 2001, 2005 phpBB Group
|