Тема: CMD/BAT: смена регистра строки текста
В обсуждение этой темы: http://forum.script-coding.com/viewtopic.php?id=3375
Предлагаю альтернативный способ преобразования строки к верхнему регистру:
@ echo off
setlocal enabledelayedexpansion
set strText=Hello, World
echo %strText%
call :UpperCase "%strText%" "strText"
echo UpperCase: %strText%
pause
exit /b 0
:UpperCase
:: Преобразование текстовой строки к верхнему регистру
:: %1 - исходная строка
:: %2 - переменная для записи результата
setlocal
set tempFile=temp.~txt
find "" "*:%~1" 2>%tempFile%
for /f "tokens=1,2* delims=:" %%a in (%tempFile%) do set strTempString=%%c
del /q %tempFile%
endlocal & set %~2=%strTempString%
exit /b 0
Преимущество метода: существенно меньше кода.
Недостаток метода: данные прогоняются через временный файл. Интересно, можно ли от этого избавиться?