中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 17:53
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]for 循环中替换变量的特殊字符 查看 995 回复 5
楼 主 [求助]for 循环中替换变量的特殊字符 发表于 2006-12-13 07:20 ·  中国 湖南 怀化 电信
初级用户
积分 170
发帖 25
注册 2004-11-11 00:00
21年会员
UID 33534
性别 男
状态 离线
首先, set /p xxx=请输入变量值: , 我想把用户输入的值中可能含有的特殊字符如`~!@#$^&...全部去掉,只保留合法有效的字符,为此,我新建了一个filterchr.txt文件,有十几行,每一行是一个特殊字符,形式如下:
`
~
!
@...
在批处理中我用
for /f %%i in (filterchr.txt) do set xxx=!XXX:%%i=!
结果得到的变量xxx值乱七八糟, 我加了变量延迟也不行

说明:要过滤的特殊字符几乎涵盖了键盘上能直接输入各种符号,%符号不过滤
2 发表于 2006-12-13 07:41 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  set /p 注定不能处理 <、>等特殊字符。

  请参考这个帖子:如何过滤变量中指定的字符
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
3 发表于 2006-12-13 08:19 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
其实set /p 中输入特殊字符以外退出的问题可以通过“构造”解决的,要不要开贴讨论啊?斑竹
4 发表于 2006-12-13 08:23 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  能处理 < 和 > 的 set /p 历来就是个难题,youxi01 如果有解决之道的话,那就开个专帖来讨论一下吧。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
5 发表于 2006-12-13 08:31 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
但是只能解决意外退出的问题哦!

不好意思,回来的时候再讨论好?,等下有事情了!

[ Last edited by youxi01 on 2006-12-13 at 08:37 AM ]
6 发表于 2006-12-13 08:33 ·  中国 河南 郑州 联通
中级用户
★★
积分 439
发帖 170
注册 2006-01-09 20:29
20年会员
UID 48707
状态 离线
Originally posted by youxi01 at 2006-12-13 08:31:
但是只能解决意外退出的问题哦!

道来听听~
恭候
bat c c++
论坛跳转: