47 lines
1023 B
Batchfile
47 lines
1023 B
Batchfile
@echo off
|
|
setlocal enabledelayedexpansion
|
|
|
|
%== Initialization ==%
|
|
set "numbers=123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0"
|
|
|
|
%== The Main Thing ==%
|
|
for %%N in (%numbers%) do (
|
|
call :middle3 %%N
|
|
)
|
|
echo.
|
|
pause
|
|
exit /b 0
|
|
%==/The Main Thing ==%
|
|
|
|
%== The Procedure ==%
|
|
:middle3
|
|
|
|
set str=%1
|
|
%== Making sure that str is positive ==%
|
|
if !str! lss 0 set /a str*=-1
|
|
|
|
%== Alternative for finding the string length ==%
|
|
%== But this has a limit of 1000 characters ==%
|
|
set leng=0&if not "!str!"=="" for /l %%. in (0,1,1000) do if not "!str:~%%.,1!"=="" set /a leng+=1
|
|
|
|
if !leng! lss 3 (
|
|
echo.%~1: [ERROR] Input too small.
|
|
goto :EOF
|
|
)
|
|
|
|
set /a "test2=leng %% 2,trimmer=(leng - 3) / 2"
|
|
|
|
if !test2! equ 0 (
|
|
echo.%~1: [ERROR] Even number of digits.
|
|
goto :EOF
|
|
)
|
|
|
|
%== Passed the tests. Now, really find the middle 3 digits... ==%
|
|
if !trimmer! equ 0 (
|
|
echo.%~1: !str!
|
|
) else (
|
|
echo.%~1: !str:~%trimmer%,-%trimmer%!
|
|
)
|
|
goto :EOF
|
|
%==/The Procedure ==%
|