标题: [文本处理] 【分享】利用批处理命令Findstr限制只允许输入数字的代码 [打印本页]
作者: Linuxer 时间: 2014-9-16 18:52 标题: 【分享】利用批处理命令Findstr限制只允许输入数字的代码
利用Findstr加正则[0-9]简单做了一个批处理限制输入为数字的代码模型。和大家分享下。因初学,代码可能不是太专业,还望大神指点一二。- @echo off
- :input
- set /p m=请输入数字:
- echo %m% | findstr /r "[0-9]" >nul
- if %errorlevel% equ 0 (goto :do) else (echo 输入错误&goto :input)
- :do
- echo ok!
- goto :end
- :end
- pause>nul
复制代码
作者: Batcher 时间: 2014-9-16 19:05
你输入大于号或者小于号试试
作者: Batcher 时间: 2014-9-16 19:07
你输入这个字符串试试:
123abc
作者: apang 时间: 2014-9-16 21:19
本帖最后由 apang 于 2014-9-16 23:39 编辑
- set /p Input=输入数字:
- echo,"%Input%"|findstr /be \"[0-9][0-9]*\" >nul
- if %errorlevel%==0 (echo,OK) else echo,NOK
复制代码
用 for 好像也可以- set /p Input=输入数字:
- for /f "tokens=1* delims=1234567890" %%a in ("a%Input%a") do (
- if "%%a.%%b" == "a.a" (echo,OK) else echo,NOK
- )
- pause
复制代码
作者: CrLf 时间: 2014-9-17 05:25
回复 4# apang
假如 %m% 含双引号呢?
如果非要用 echo var | 外部命令 的办法来写批处理的话,建议这样:- cmd /v "echo !var!" | findstr xxxxx
- ::未开启变量延迟的时候
-
- cmd /v "echo ^!var^!" | findstr xxxxx
- ::开启变量延迟的时候
复制代码
可以省却一大堆的兼容性考虑,效率却不会降低
作者: Linuxer 时间: 2014-9-17 11:11
本帖最后由 Linuxer 于 2014-9-17 11:18 编辑
回复 3# Batcher
大于小于号可以给变量加引号能解决,想起来了,123abc可以用\<>\来判断,不知道这样对不对。我测试了可以正常判断123abc这样的。- @echo off
- :input
- set /p m=请输入数字:
- echo "%m%" | findstr /r "\<[0-9]>\" >nul
- if %errorlevel% equ 0 (goto :do) else (echo 输入错误&goto :input)
- :do
- echo ok!
- goto :end
- :end
- pause>nul
复制代码
作者: Linuxer 时间: 2014-9-17 11:27
回复 4# apang
非常感谢~findstr开关不一样,学习了。for循环的那个,如果是输入的字母,如abc,那没有数字,delims是怎么来分的呢。
作者: Batcher 时间: 2014-9-17 11:32
回复 6# Linuxer
你输入这个试试:
123
作者: apang 时间: 2014-9-17 11:39
本帖最后由 apang 于 2014-9-17 12:32 编辑
回复 5# CrLf
奇数个双引号的情况貌似不太容易碰到?个人认为
作者: Linuxer 时间: 2014-9-17 12:34
回复 5# CrLf
这个不知道咋用的,,,我带入进代码不生效。
作者: Linuxer 时间: 2014-9-17 12:36
回复 8# Batcher
看来还是不完美,,想不出了,除了用/BE之外,还能怎么判断。
批处理里边怎么使用正则表达式呢?比如想判断8位数字。\d{8}这个怎么在bat里实现呢。。测试老会也不对。
作者: Batcher 时间: 2014-9-17 12:39
回复 11# Linuxer
连续写8个[0-9]
作者: apang 时间: 2014-9-17 12:42
回复 7# Linuxer
如果变量 Input 值为 abc,a%input%a即aabca,%%a为aabca,%%b为空
如果变量 Input 值为 123,那么a%input%a即为a123a,%%a为a,%%b为a
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |