中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 19:31
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » set 能否替换%str%里的"*"为空?
可打印版本  3,119 / 17
第1楼 huzixuan 发表于 2007-05-04 07:45
高级用户 发帖 219 积分 537 来自 芜湖
set 能否替换%str%里的"*"为空?

本以为这样可以,没想到却不行,不知是何故?
第2楼 ccwan 发表于 2007-05-04 08:10
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
简单一点的话:
第3楼 huzixuan 发表于 2007-05-04 08:17
高级用户 发帖 219 积分 537 来自 芜湖
饿, ccwan 兄,再问一句,若是以下的情况,星号随机出现在字符串里
如果想单单的替换掉它,不知还有没有其他办法?

第4楼 slore 发表于 2007-05-04 09:13
铂金会员 发帖 2,478 积分 5,212
第5楼 huzixuan 发表于 2007-05-04 11:04
高级用户 发帖 219 积分 537 来自 芜湖
slore兄
看了,但没有发现解决办法
第6楼 slore 发表于 2007-05-04 11:42
铂金会员 发帖 2,478 积分 5,212
那个可以从任意字符里提取啊。。。就个新号应该可以T除吧
第7楼 ansipeter 发表于 2007-05-04 15:33
中级用户 发帖 130 积分 269
可以试试用FOR来完成,不过很死板
第8楼 ansipeter 发表于 2007-05-04 16:25
中级用户 发帖 130 积分 269
也可以试试下面的方法,比上面的通用性好些
第9楼 stornager 发表于 2007-05-04 16:52
中级用户 发帖 131 积分 328
请问ansipeter兄这句set "str=1234*567*89.d[];534*896"中的d[]是何用法??
第10楼 lxmxn 发表于 2007-05-04 17:11
版主 发帖 4,938 积分 11,386
为什么不用sed?
第11楼 huzixuan 发表于 2007-05-05 08:41
高级用户 发帖 219 积分 537 来自 芜湖
看来是没有好的办法来替换,只好考虑一下如 sed 之类的工具来完成了.
谢谢各位帮助小弟出谋划策!!
第12楼 digger 发表于 2007-05-05 13:42
初级用户 发帖 29 积分 79 来自 湖南
真的没有好的办法了吗?
第13楼 huzixuan 发表于 2007-05-05 17:20
高级用户 发帖 219 积分 537 来自 芜湖
厉害!
是何原理?
第14楼 slore 发表于 2007-05-05 22:41
铂金会员 发帖 2,478 积分 5,212
@echo off
set "str=1234*5***sdf*67*8*9*abcd*"

:loop
for /f "delims=* tokens=1*" %%a in ("%str%") do (
if not "%%a"=="%str%" set str=%%a%%b&& goto loop
)
echo %str%
pause




谢谢digger更正

[ Last edited by slore on 2007-5-5 at 11:45 PM ]
第15楼 digger 发表于 2007-05-05 23:08
初级用户 发帖 29 积分 79 来自 湖南
slore的代码比我的更加精简,佩服。

不过,&&要紧跟%%b,否则,会多出很多空格来的,你用 echo "%str%" 就可以看出来了。
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023