中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: findstr判断数字 上一主题 | 下一主题
wangbing111
初级用户





积分 41
发帖 16
注册 2008-6-21
状态 离线
『楼 主』:  findstr判断数字

@echo off
set /p var=请输入:
echo %var%|findstr "^[0-9]*$">nul||echo illegal number
pause

为什么不起作用?

2008-7-26 16:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 2 楼』:  

这段代码工作得挺好嘛?哪里有问题了?

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 ]

2008-7-26 18:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 3 楼』:  


@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


2008-7-26 19:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 4 楼』:  


@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


2008-7-26 19:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 5 楼』:  

思路差不多
@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 ]

2008-7-26 21:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
obsolete
初级用户





积分 192
发帖 72
注册 2005-7-31
状态 离线
『第 6 楼』:  

纠正一下,四楼的方法不可用,当输入包含一元算术运算符时结果不正确
比如!#

如果用于判断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 ]

2008-7-26 21:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: