Тема: CMD/BAT: перевёртыш (зеркальное обращение текста)
При разработке и разгадке головоломок, запутанных и витееватых хитросплетений кода, да и просто "JUST FOR LULZ" :-D
, полезно иметь под рукой такую полезняшку.
@echo off
SETLOCAL EnableDelayedExpansion EnableExtensions
set tmpstr=
set text=%*
IF "%~1"=="" (set/p text= )
call :StrlenF "%text%" strlen
call :backstrF "%text%" %strlen% backstr
echo.
exit/b
:backstrF
echo.
:proc_LOOP
set tmpstr=%tmpstr%!text:~%strlen%,1!
<nul set /p tmpstr=!text:~%strlen%,1!
set /a strlen-=1
if !strlen! EQU -1 (set %3=%tmpstr% & exit /b)
goto :proc_LOOP
exit/b
:StrLenF ([in]str,[out]Length)
:: -----------------------
:: Функция Нахождения длины строки /by Aскет/
:: -----------------------
Set complen=0
Set StringBuf=%~1
If ""=="%~1" GoTo :EOF
:StringLenLoop
Set /A complen+=1
Call Set StringChr=%%StringBuf:~%complen%%%
set %2=%complen%
If ""=="%StringChr%" GOTO :EOF
GoTo :StringLenLoop
exit/b
Вводить текст можно интерактивно, можно задавать его параметром запуска утилиты,
но также можно и обрабатывать файлы, пример:
c:\> TYPE C:\кадум\текст.txt|C:\кадум\перевертыш.bat
оговакул то сан ьвабзи он ,еинешукси в сан идевв ен и ;умешан укинжлод умокясв меащорп ым и оби ,ишан
ихерг ман итсорп и ;ьнед йыджак ан ман йавадоп йынщусан шан белх ;ебен ан как ,елмез ан и яовТ ялов те
дуб ад ;еовТ еивтсраЦ тедиирп ад ;еовТ ями яститявс ад !хасебен ан йищус ,шан ечто