@echo off
set /p var=请输入:
echo %var%|findstr "^[0-9]*$">nul||echo illegal number
pause
为什么不起作用?
作者: obsolete 时间: 2008-7-26 18:47
这段代码工作得挺好嘛?哪里有问题了?
PS:
1. 确保之前没有设置过环境变量var,否则用户只输入回车时,var保留以前的值
2. %var%引用变量可能无法处理用户的“非法输入”,比如包含"的情况。试试使用延迟环境变量或
call,echo %%var%%|findstr "^[0-9]*$">nul||echo illegal number
[ Last edited by obsolete on 2008-7-26 at 06:58 PM ]
作者: obsolete 时间: 2008-7-26 19:25
@echo off
setlocal enabledelayedexpansion
:loop
set var=
set /p var=请输入:
for %%i in ("^" ">" "<" "|" "&" "%%") do set var=!var:%%~i=^^%%~i!
echo !var!|findstr "^[0-9]*$">nul||echo illegal number
goto :loop
pause
作者: obsolete 时间: 2008-7-26 19:48
@echo off
setlocal enabledelayedexpansion
:loop
set var=
set num=0
set /p var=请输入:
set /a num=!var! 2>nul
if !num!==0 (
if not "!var!"=="0" echo illegal number
)
goto :loop
pause
作者: obsolete 时间: 2008-7-26 21:15
思路差不多
@echo off
setlocal enabledelayedexpansion
:loop
set var=a
set /p var=请输入:
for /l %%i in (0,1,9) do if defined var set var=!var:%%i=!
if not "!var!"=="" echo illegal number
goto :loop
pause
[ Last edited by obsolete on 2008-7-26 at 09:16 PM ]
@echo off
setlocal enabledelayedexpansion
:loop
set var=
set num=0
set /p var=请输入:
set /a num=!var! 2>nul
if not "!var!"=="!num!" echo illegal number
goto :loop
pause
[ Last edited by obsolete on 2008-7-26 at 09:45 PM ]