中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 12:30
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 【超级question】关于变量替换的星号
可打印版本  1,223 / 10
第1楼 NeverAgain 发表于 2009-05-14 08:56
初级用户 发帖 40 积分 67
【超级question】关于变量替换的星号
大家都知道


会将变量str中从左端开始到第一次出现":"的一段字符替换为空然后再显示
比如

将显示

可是问题来了,我现在要替换下面字符串(假定该字符串很长,含有的星号较多)里的星号为空格:

那么怎么办?

我试了下用set %str:str1=str2% 这种方法遇到障碍,echo %str:*= %是行不通的!
若用for /f "delims=*" ... 或者其他做法繁琐,

我现在想到用转义字符^去转义*,然后用set %str:str1=str2%的方法(因为这样简洁,一行就搞定了!)

麻烦各位大虾指点迷津

[ Last edited by NeverAgain on 2009-5-14 at 08:58 ]
第2楼 netbenton 发表于 2009-05-14 09:52
银牌会员 发帖 752 积分 1,916 来自 广西
::把*号换为dir
@echo off&setlocal enabledelayedexpansion
set *=dir
set str=ab*c*d*A。*。*。R**T.《》*、*/*\*?.***.tt1254*5...too long!

:lp
if "!str:~%n%,1!" equ "" goto :ok
if "!str:~%n%,1!" equ "*" (set de=!de!!*!) else (set de=!de!!str:~%n%,1!)
set/a n+=1
goto :lp
:ok
echo !de!
pause
第3楼 NeverAgain 发表于 2009-05-14 10:35
初级用户 发帖 40 积分 67
不错,看来是高手,很感谢!!

但离我的期望还差。。。

有没有简洁点的?
第4楼 yishanju 发表于 2009-05-14 15:59
银牌会员 发帖 1,357 积分 1,488
echo ab*c*d*A。*。*。R**T.《》*、*/*\*?.***.tt1254*5...too long!|fr -f:"*" -t:" "


FR 下载 http://baiy.cn/utils/fr/index.htm
第5楼 NeverAgain 发表于 2009-05-17 04:15
初级用户 发帖 40 积分 67
Originally posted by yishanju at 2009-5-14 03:59 PM:
echo ab*c*d*A。*。*。R**T.《》*、*/*\*?.***.tt1254*5...too long!|fr -f:"*" -t:" "


FR 下载 http://baiy.cn/utils/fr/index.htm


thank you for your reply, but i want to get answer about pure batch scripts.
第6楼 everest79 发表于 2009-05-17 07:41
金牌会员 发帖 1,127 积分 2,564
在这里转义无效,因为find的参数*就是当作字符来处理的,而转义的作用就是把控制符或特征符转换成字符
也就是说*号无法直接替换
要理解变量的存放方式
set b=^^^^*
echo %b:^^^*%
第7楼 plp626 发表于 2009-09-19 02:30
银牌会员 发帖 1,020 积分 2,278
好问题!
就是我也不知道怎么直接替换。。。。
第8楼 523066680 发表于 2009-09-19 05:22
银牌会员 发帖 1,133 积分 2,362
怎么这种事情一定要批处理去做,真是的……
第9楼 523066680 发表于 2009-09-19 06:56
银牌会员 发帖 1,133 积分 2,362
好像是气不过,一定想做一个可以的。
我觉得花上这么多时间弄 真不值得。偏要取其短。


vbs的


[ Last edited by 523066680 on 2009-9-19 at 07:06 ]
第10楼 plp626 发表于 2009-09-19 12:27
银牌会员 发帖 1,020 积分 2,278
Originally posted by 523066680 at 2009-9-19 05:22 AM:
怎么这种事情一定要批处理去做,真是的……


这个*替换问题对数学表达式处理极为有用,你思考过没?

http://bbs.bathome.cn/viewthread.php?tid=4699
第11楼 523066680 发表于 2009-09-19 21:34
银牌会员 发帖 1,133 积分 2,362
原来~ 如此~

这个*替换问题对数学表达式处理极为有用

这个根我强调不建议用批处理做有啥关系,你看我自己还写了呢。

[ Last edited by 523066680 on 2009-9-19 at 22:08 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023