中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 15:51
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何过滤变量中指定的字符[已解决]
可打印版本  8,794 / 31
第1楼 fornever 发表于 2006-08-30 21:41
初级用户 发帖 35 积分 98
如何过滤变量中指定的字符[已解决]
我想要实现的功能是在用户输入任意字符后过滤掉指定的字符
或者是指定使用的字符类型

请高手指教!

[ Last edited by fornever on 2006-9-16 at 22:03 ]
第2楼 NaturalJ0 发表于 2006-08-30 21:51
银牌会员 发帖 533 积分 1,181
把 var 分两段
第一段是第一个字符,第二段是后面所有剩余的。
然后判断第一个字符是否要过滤。。。
然后判断剩下的字符串是否为空,如果不是就 GOTO 回上去继续循环。
第3楼 namejm 发表于 2006-08-30 22:51
荣誉版主 发帖 1,737 积分 5,226 来自 成都
Re fornever:

  过滤掉输入的字符是什么意思?就是在某个文本中把输入的字符删掉么?不明白你想做什么操作。
第4楼 fornever 发表于 2006-08-31 21:21
初级用户 发帖 35 积分 98
是这样,比如用copy con h.txt命令或者set /p 命令让用户输入任意字符,然后我在后台过滤掉指定的字符,也不是过滤,就是提示说哪个哪个字符不准使用.总之是要识别某种字符吧!偶语文ci,还原谅!~

re:NaturalJ0
在想如何分割一个字符串,包括数字字母和n多的符号,或者说是 规定只能用某种类型的字符,比如规定只能用字母和数字,
要怎么样实现?
或者借助第三方工具?
第5楼 NaturalJ0 发表于 2006-08-31 21:45
银牌会员 发帖 533 积分 1,181
set /p var="请用户输入:"

%var:~0,1% 这表示的是变量 var 的第一个字符
%var:~1% 这表示变量 var 除第一个字符外的后面所有字符

分段后你可以再做赋值或比较什么的,可以再用这个方法对剩下的字符串再取第一个字符。后面再怎么做,我想你自己会的吧。
第6楼 fornever 发表于 2006-08-31 22:23
初级用户 发帖 35 积分 98
呵呵.刚学会在看回复前,不过还是谢谢哈!
批处理真的是博大精深,敬!
想想还是现在写一下代码:

set /p var=请输入:
:start
if "%var:~0,1%"=="?" goto error
if "%var:~0,1%"==">" goto error
if "%var:~0,1%"=="<" goto error
if "%var:~0,1%"=="|" goto error
:: if "%var:~0,1%"=="添加过滤的字符" goto error
if "var"=="" goto next
set var=%var:~1%
goto start
:next
echo succeed!
goto end
:error
echo error!
:end

再次感谢帮助过的朋友!
第7楼 namejm 发表于 2006-08-31 23:51
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  批处理并不能检测所有的字符,碰到敏感字符如|、>、<等等就会自动退出的。
第8楼 vkill 发表于 2006-09-01 12:55
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
namejm 说的有理
第9楼 fornever 发表于 2006-09-01 18:36
初级用户 发帖 35 积分 98
...那用^符号可以吗?
其实我的目的是过滤掉那些不允许做文件名的字符
第10楼 fornever 发表于 2006-09-04 05:19
初级用户 发帖 35 积分 98
关于fingstr命令
其实还是上次的问题,不过今次不同的是要限制
限制set /p 后用户输入的字符为数字,大小写字母和特定的几个特殊符号
或者只限制某个类型的也可以!
第11楼 namejm 发表于 2006-09-05 07:18
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  fingstr应该是findstr的笔误。

  上次?上次的在哪?如果不是有心人,没人会关注他人的上次发的究竟是什么帖子。呵呵,你的要求我看得一头雾水。
第12楼 fornever 发表于 2006-09-05 22:34
初级用户 发帖 35 积分 98
对不起 确实是
http://www.cn-dos.net/forum/viewthread.php?tid=22897&fpage=1&highlight=
所谓的上次

意思是在用户输入字符串后用if 和findstr判断输入中是否有限制的字符

我想用findstr 限制输入的数据类型 为 大小写字母和数字
code:

set /p input:
::此处写findstr限制的%input:%类型
if ....
::此句if判断是否有不允许的字符类型,比如某些符号
第13楼 vkill 发表于 2006-09-06 02:28
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
这个难
第14楼 9527 发表于 2006-09-06 02:53
银牌会员 发帖 438 积分 1,185 来自 北京
findstr "^[a-z][A-Z]*$" 判断纯字母
findstr "^[0-9]*$" 判断纯数字

@echo off
set/p aa=Enter your code:
echo %aa%|findstr "^[a-z][A-Z]*$"||echo ERROR!!!

随便写了一下,判断纯字母,不知道楼主是否是这个意思???
第15楼 namejm 发表于 2006-09-06 02:57
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  贴一段findstr的用法出来,楼主可以模仿着写个限制输入类型的代码出来:
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023