Выдалось время и было интересно запустить краш-тест
Здесь валится на символах:
& | "
Цитата megaloman:
Мой вариант, частично списанный у Iska. »
|
Здесь уже лучше, но валится на:
"
В свою очередь, чтобы не быть пустым критиканом, даю свою версию на краш-тест:
Код:
@echo off
set /a a=2
:begin
set "b= "
cls
set /p "b=Введите число: "
set "b=%b:"=%"
if "%b%"=="" (echo это не число&pause&goto begin)
echo."%b%"|>nul findstr /rc:"[&|^%%]"&&(echo это не число&pause&goto begin)
if "%b:~,2%"=="0x" (
echo.%b:~2%|>nul findstr /irc:"[^0-9a-f]"&&(echo это не число&pause&goto begin)
) else (
echo.%b%|>nul findstr /rc:"[^0-9]"&&(echo это не число&pause&goto begin)
)
set /a c=b
if %c% equ 0 if not %c% equ %b% (echo некорректное число&pause&goto begin)
echo sum=%a%+%c%
set /a sum=a+c
echo sum=%sum%
pause&exit /b