中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 18:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助 findstr 或 sed 怎么判断变量是否为纯中文字
楼 主 求助 findstr 或 sed 怎么判断变量是否为纯中文字 发表于 2006-11-02 07:41 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
set/p "var=" name=

我怎么判断%name%是否为纯中文字,例如"张三"可以,而"张3"等类似则不行

[ Last edited by he200377 on 2006-11-2 at 07:42 AM ]
2 发表于 2006-11-02 08:44 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
UID 68504
性别 男
来自 湖南==》广东
状态 离线
看看我们版主的老帖子:
http://www.cn-dos.net/forum/viewthread.php?tid=22938&fpage=1&highlight=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

提一个简单的解决办法(过滤效果不敢恭维):

@echo off
set/p var= name:
echo %var% |findstr "">nul && echo 含非中文!||echo 好的,输入正确!
pause>nul
3 发表于 2006-11-02 09:41 ·  中国 浙江 宁波 鹏博士宽带
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
UID 40733
性别 男
状态 离线
sed 的没搞出来,来个 GREP 的吧,
echo %name%|grep -P "^[^\x00-\x80]+$" >nul&& ok!通过!
注意:这个表达式全角符号也会通过。
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

4 发表于 2006-11-02 09:46 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  在2F的基础上写个演示代码,在不考虑输入敏感字符的情况下,可以判断输入的是不是数字和字母的混合格式:

@echo off
set var=
set/p var= 请输入字符串:
echo %var% |findstr "^*$">nul && echo 该字符串是纯数字或纯字母或数字和字母的组合!||echo 该字符串含有数字和字母之外的字符
pause>nul
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
5 发表于 2006-11-02 12:42 ·  美国 北达科他州立大学
中级用户
★★
积分 316
发帖 152
注册 2006-06-18 13:01
UID 57204
性别 男
状态 离线
在这里又学到了grep的一个例子
6 发表于 2006-11-03 01:38 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
UID 61449
来自 北京
状态 离线
echo 我是谁|findstr "^[^a-zA-Z0-9;:|~`!@#%&{}_+-="',/\\\.\*\[\]\^\$\?]*$"
我今后在论坛的目标就是做个超级坏人!!!
7 发表于 2006-11-03 07:17 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
findstr "^[0-9a-zA-Z] 我在想难道除了字母数字剩下的就是中文吗?

张,三 也算吗?

无奈何斑竹的还没有试,要求是春中文字 ,不包括& | % 等等
8 发表于 2006-11-04 07:26 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
Originally posted by 无奈何 at 2006-11-2 09:41:
sed 的没搞出来,来个 GREP 的吧,
echo %name%|grep -P "^+$" >nul&& ok!通过!
注意:这个表达式全角符号也会通过。

今天再看看,ASII码值应运的真好~我linux的教材上看没有看到-P的参数,看要找点资料看看了
9 发表于 2006-11-04 11:56 ·  中国 北京 中移铁通
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
UID 40733
性别 男
状态 离线
grep 高版本好像是 2.5 以后加入的参数,-P 参数的作用是用 perl 样式的正则表达式匹配模式。
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

10 发表于 2006-11-09 02:44 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
echo %name%|sed "s/[\x00-\x80]/,/" |findstr ",">nul ||echo ok
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +2 2006-11-09 02:49
11 发表于 2006-11-09 08:55 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线
@if %var% lss 吖 echo 不是汉字!

据说汉字区位码中一级字库是按拼音来排列的,没有时间测试,有朋友发现bug的吱一声。
论坛跳转: