|
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%
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
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%
|
江湖远
碧空长
路茫茫
一个人漫无目的的奔跑,风,刺骨的冷.... |
|
2007-5-4 08:17 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
|
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
|
|
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)
|
|
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"
|
|
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 |
|