中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: set 能否替换%str%里的"*"为空? 上一主题 | 下一主题
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『楼 主』:  set 能否替换%str%里的"*"为空?


@echo off
set "str=123*"
set str=%str:^*=%
echo %str%
本以为这样可以,没想到却不行,不知是何故?



江湖远
碧空长
路茫茫

    一个人漫无目的的奔跑,风,刺骨的冷....
2007-5-4 07:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 2 楼』:  

简单一点的话:
@echo off
set "str=123*"
set str=%str:3*=3%
echo %str%


   此帖被 +1 点积分     点击查看详情   
评分人:【 huzixuan 分数: +1  时间:2007-5-5 08:41




三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-5-4 08:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 3 楼』:  

饿, ccwan 兄,再问一句,若是以下的情况,星号随机出现在字符串里
如果想单单的替换掉它,不知还有没有其他办法?
@echo off
set "str=1234*567*89"
set str=%str:3*=3%
echo %str%


   此帖被 +2 点积分    点击查看详情   
评分人:【 my3439955 分数: +2  时间:2007-6-5 19:39




江湖远
碧空长
路茫茫

    一个人漫无目的的奔跑,风,刺骨的冷....
2007-5-4 08:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:  

http://www.cn-dos.net/forum/viewthread.php?tid=30232&fpage=2

看看里面的提取数字

   此帖被 +1 点积分     点击查看详情   
评分人:【 huzixuan 分数: +1  时间:2007-5-5 08:42


2007-5-4 09:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 5 楼』:  

slore兄
看了,但没有发现解决办法



江湖远
碧空长
路茫茫

    一个人漫无目的的奔跑,风,刺骨的冷....
2007-5-4 11:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 6 楼』:  

那个可以从任意字符里提取啊。。。就个新号应该可以T除吧

2007-5-4 11:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 7 楼』:  

可以试试用FOR来完成,不过很死板
@echo off&setlocal
set "str=1234*567*89"
for /f "delims=* tokens=1,2*" %%a in ("%str%") do echo %%a%%b%%c


   此帖被 +1 点积分     点击查看详情   
评分人:【 huzixuan 分数: +1  时间:2007-5-5 08:42


2007-5-4 15:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ansipeter
中级用户

替身



积分 269
发帖 130
注册 2007-3-23
状态 离线
『第 8 楼』:  

也可以试试下面的方法,比上面的通用性好些
@echo off&setlocal enabledelayedexpansion
set "str=1234*567*89.d[];534*896"
set a=0&set c=0
:loop
if not defined c (echo %b%&goto:eof)
if not "!str:~%a%,1!" equ "*" (set b=!b!!str:~%a%,1!&set c=!str:~%a%!&set/a a+=1&goto:loop) else (set/a a+=1&goto:loop)


   此帖被 +2 点积分      点击查看详情   
评分人:【 huzixuan 分数: +2  时间:2007-5-5 08:42


2007-5-4 16:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
stornager
中级用户

scriptlover


积分 328
发帖 131
注册 2007-3-25
状态 离线
『第 9 楼』:  

请问ansipeter兄这句set "str=1234*567*89.d[];534*896"中的d[]是何用法??



scriptlover
Be with script forever!!
2007-5-4 16:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 10 楼』:  

为什么不用sed?
echo 1234*567*89.d[];534*896|sed "s/\*//g"


   此帖被 +1 点积分     点击查看详情   
评分人:【 huzixuan 分数: +1  时间:2007-5-5 08:41


2007-5-4 17:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 11 楼』:  

看来是没有好的办法来替换,只好考虑一下如 sed 之类的工具来完成了.
谢谢各位帮助小弟出谋划策!!



江湖远
碧空长
路茫茫

    一个人漫无目的的奔跑,风,刺骨的冷....
2007-5-5 08:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
digger
初级用户

游荡的孤魂



积分 79
发帖 29
注册 2007-4-2
来自 湖南
状态 离线
『第 12 楼』:  

真的没有好的办法了吗?
@echo off
set "str=12345*67*89"

:loop
for /f "delims=*" %%i in ("%str%") do call set "var=%%var%%%%i"
set "str_tmp=%str%"
set "str=%str:**=%"
if not "%str_tmp%"=="%str%" goto loop
echo "%var%"

pause


2007-5-5 13:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 13 楼』:  

厉害!
是何原理?



江湖远
碧空长
路茫茫

    一个人漫无目的的奔跑,风,刺骨的冷....
2007-5-5 17:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 14 楼』:  

@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 ]

2007-5-5 22:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
digger
初级用户

游荡的孤魂



积分 79
发帖 29
注册 2007-4-2
来自 湖南
状态 离线
『第 15 楼』:  

slore的代码比我的更加精简,佩服。

不过,&&要紧跟%%b,否则,会多出很多空格来的,你用 echo "%str%" 就可以看出来了。

2007-5-5 23:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: