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

Показать сообщение отдельно

Аватара для gora

Ушёл из жизни


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

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


Код: Выделить весь код
@Echo Off
:: Кодировка файла Кириллица DOS (866)
SetLocal EnableDelayedExpansion
:: Путь к обрабатываемой папке
Set Folder=e:\Temp 1\3 3

:: Список замен
Set preset=а_А б_Б в_В г_Г д_Д е_Е ё_Ё ж_Ж з_З и_И й_Й к_К л_Л м_М н_Н о_О п_П р_Р с_С т_Т у_У ф_Ф х_Х ц_Ц ч_Ч ш_Ш щ_Щ ъ_Ъ ы_Ы ь_Ь э_Э ю_Ю я_Я
:: После проверки слово ECHO удалить
For /F "tokens=* delims=" %%A In ('Dir /S /B /A:-D "%folder%"') Do (
	Call :_case1 "%%~nA"
	Echo Ren "%%A" "!Result!%%~xA"
	Call :_case2 "%%~nA"
	Echo Ren "%%A" "!Result!%%~xA"
	Call :_case3 "%%~nA"
	Echo Ren "%%A" "!Result!%%~xA"
	Call :_case4 "%%~nA"
	Echo Ren "%%A" "!Result!%%~xA"
)
Pause
Exit

:_case1
:: Замена последнего символа в имени файла
Set Data=%~1
Set Char=%Data:~-1%
For %%I In (%preset%) Do For /F "tokens=1,2 delims=_" %%A In ("%%I") Do If %Char%==%%A Set Char=%%B& GoTo _next1
:_next1
Set Result=%Data:~0,-1%%Char%
GoTo :EOF

:_case2
:: Замена первого символа в имени файла
Set Data=%~1
Set Char=%Data:~0,1%
For %%I In (%preset%) Do For /F "tokens=1,2 delims=_" %%A In ("%%I") Do If %Char%==%%A Set Char=%%B& GoTo _next2
:_next2
Set Result=%Char%%Data:~1%
GoTo :EOF

:_case3
:: Замена двух последних символов в имени файла
Set Data0=%~1
Set Data=%Data0:~-2%
Set Result=
:_loop3
Set Char=%Data:~,1%
For %%I In (%preset%) Do For /F "tokens=1,2 delims=_" %%A In ("%%I") Do If %Char%==%%A Set Char=%%B& GoTo _next3
:_next3
Set Result=%Result%%Char%
Set Data=%Data:~1%
If Defined Data GoTo _loop3
Set Result=%Data0:~0,-2%%Result%
GoTo :EOF

:_case4
:: Замена трех символов в имени файла (с четвертого по шестой)
Set Data0=%~1
Set Data=%Data0:~3,3%
Set Result=
:_loop4
Set Char=%Data:~,1%
For %%I In (%preset%) Do For /F "tokens=1,2 delims=_" %%A In ("%%I") Do If %Char%==%%A Set Char=%%B& GoTo _next4
:_next4
Set Result=%Result%%Char%
Set Data=%Data:~1%
If Defined Data GoTo _loop4
Set Result=%Data0:~0,3%%Result%%Data0:~6%
GoTo :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:02, 01-08-2014 | #2