Тема: CMD/BAT: смена регистра строки текста
Набор функций для пакетного файла для смены регистра (UpperCase, LowerCase, ProperCase) строки текста.
@echo off
setlocal enableextensions enabledelayedexpansion
set strText=МаМа МыЛа РаМу
call :UpperCase "%strText%" "strText"
echo UpperCase: [%strText%]
set strText=МаМа МыЛа РаМу
call :LowerCase "%strText%" "strText"
echo LowerCase: [%strText%]
set strText=МаМа МыЛа РаМу
call :ProperCase "%strText%" "strText"
echo ProperCase: [%strText%]
endlocal
exit /b 0
rem ==========================================================================
rem ==========================================================================
rem Процедура UpperCase
rem
rem %1 : строка текста
rem %2 : имя переменной для возврата транслированного значения
rem ==========================================================================
:UpperCase
setlocal enableextensions enabledelayedexpansion
call :Translate "%~1" "U" "strTempString"
endlocal & set %~2=%strTempString%
exit /b 0
rem ==========================================================================
rem ==========================================================================
rem Процедура LowerCase
rem
rem %1 : строка текста
rem %2 : имя переменной для возврата транслированного значения
rem ==========================================================================
:LowerCase
setlocal enableextensions enabledelayedexpansion
call :Translate "%~1" "L" "strTempString"
endlocal & set %~2=%strTempString%
exit /b 0
rem ==========================================================================
rem ==========================================================================
rem Процедура ProperCase
rem
rem %1 : строка текста
rem %2 : имя переменной для возврата транслированного значения
rem ==========================================================================
:ProperCase
setlocal enableextensions enabledelayedexpansion
set strTempString=%~1
call :UpperCase "%strTempString:~0,1%" "strFirstChar"
call :LowerCase "%strTempString:~1%" "strLastChars"
endlocal & set %~2=%strFirstChar%%strLastChars%
exit /b 0
rem ==========================================================================
rem ==========================================================================
rem Процедура Translate
rem
rem %1 : строка текста
rem %2 : направление трансляции (L|U)
rem %3 : имя переменной для возврата транслированного значения
rem ==========================================================================
:Translate
setlocal enableextensions enabledelayedexpansion
set strTempString=%~1
for /f "tokens=2,3" %%i in ('findstr.exe /b /l "# " "%~f0"') do (
if /i "%~2" equ "L" (
set strTempString=!strTempString:%%~i=%%~j!
) else if /i "%~2" equ "U" (
set strTempString=!strTempString:%%~j=%%~i!
)
)
endlocal & set %~3=%strTempString%
exit /b 0
rem ==========================================================================
rem ==========================================================================
rem Таблица трансляции символов
rem ==========================================================================
# A a
# B b
# C c
# D d
# E e
# F f
# G g
# H h
# I i
# J j
# K k
# L l
# M m
# N n
# O o
# P p
# Q q
# R r
# S s
# T t
# U u
# V v
# W w
# X x
# Y y
# Z z
# А а
# Б б
# В в
# Г г
# Д д
# Е е
# Ё ё
# Ж ж
# З з
# И и
# Й й
# К к
# Л л
# М м
# Н н
# О о
# П п
# Р р
# С с
# Т т
# У у
# Ф ф
# Х х
# Ц ц
# Ч ч
# Ш ш
# Щ щ
# Ъ ъ
# Ы ы
# Ь ь
# Э э
# Ю ю
# Я я
rem ==========================================================================
UpperCase: [МАМА МЫЛА РАМУ] LowerCase: [мама мыла раму] ProperCase: [Мама мыла раму]
Отдельное спасибо коллегам kiber_punk и Rumata за идею.
См. также Серый форум / CMD/BAT: транслитерация текста.