中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-09 06:26
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » findstr判断数字 查看 932 回复 5
楼 主 findstr判断数字 发表于 2008-07-26 16:19 ·  中国 北京 光环新网
初级用户
积分 41
发帖 16
注册 2008-06-21 18:02
18年会员
UID 120681
性别 男
状态 离线
@echo off
set /p var=请输入:
echo %var%|findstr "^[0-9]*$">nul||echo illegal number
pause

为什么不起作用?
2 发表于 2008-07-26 18:47 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线
这段代码工作得挺好嘛?哪里有问题了?

PS:
1. 确保之前没有设置过环境变量var,否则用户只输入回车时,var保留以前的值
2. %var%引用变量可能无法处理用户的“非法输入”,比如包含"的情况。试试使用延迟环境变量或
call,echo %%var%%|findstr "^*$">nul||echo illegal number

[ Last edited by obsolete on 2008-7-26 at 06:58 PM ]
3 发表于 2008-07-26 19:25 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线

@echo off
setlocal enabledelayedexpansion

:loop
set var=
set /p var=请输入:
for %%i in ("^" ">" "<" "|" "&" "%%") do set var=!var:%%~i=^^%%~i!
echo !var!|findstr "^*$">nul||echo illegal number
goto :loop
pause
4 发表于 2008-07-26 19:48 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线

@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
5 发表于 2008-07-26 21:15 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线
思路差不多


@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 ]
6 发表于 2008-07-26 21:40 ·  中国 浙江 杭州 电信
初级用户
★★
积分 192
发帖 72
注册 2005-07-31 21:10
21年会员
UID 41234
状态 离线
纠正一下,四楼的方法不可用,当输入包含一元算术运算符时结果不正确
比如!#

如果用于判断21亿左右内的非负整数,且除了0本身外不以0打头,改一下还能用

@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 ]
论坛跳转: