![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 21:46 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 【求助】替换批处理文件中的字符后,>之后的内容丢失 |
| 可打印版本 640 / 5 |
| 第1楼 kakenhi | 发表于 2009-12-19 18:49 |
| 初级用户 发帖 21 积分 21 | |
|
【求助】替换批处理文件中的字符后,>之后的内容丢失 假如a.bat内容如下:
------------------------------------- echo HelloWorld>1.txt ------------------------------------- 现在,我想将这个批处理中所有的Hello字符替换成Nice字符, 根据前辈们以前写的代码: setlocal enabledelayedexpansion for /f "delims=" %%i in (a.bat) do ( set var=%%i set "var=!var:Hello=Nice!" >>b.bat echo !var! ) 这样替换后得到的b.bat的内容变成了: -------------------------------------- echo NiceWorld -------------------------------------- 而我原本期望得到: -------------------------------------- echo NiceWorld>1.txt -------------------------------------- 也就是说,批处理文件中所有的">"和>后面的内容都丢失了。 怎么才能不丢失呢? 还有,如果标签中包含了需要替换的字符,也就是说假如有个标签为: :Hello 那个标签也会被替换成:Nice。因此我不想替换标签中的字符。 如何同时满足以上两个要求呢? 小弟菜鸟,跪求高手解答m(_ _)m。 先谢谢了。 [ Last edited by kakenhi on 2009-12-19 at 19:13 ] |
|
| 第2楼 Hanyeguxing | 发表于 2009-12-19 19:28 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
1,按照你的代码和示例,没有发现>丢失的现象。在xp sp3系统下
2,行首的标签,可以通过判断第一个字符来实现规避替换,而goto 后的标签不加:,就可以。但此方法不能解决 call 和goto :eof的问题。 当然,也可以通过往回替换的方法来解决这个问题 3,这些问题,可以通过第三方命令工具解决。 [ Last edited by Hanyeguxing on 2009-12-19 at 19:44 ] |
|
| 第3楼 kakenhi | 发表于 2009-12-19 19:53 |
| 初级用户 发帖 21 积分 21 | |
|
按照您的代码,问题解决了。
规避标签的方法也学到了。 再次拜谢m(_ _)m |
|
| 第4楼 kakenhi | 发表于 2009-12-19 20:25 |
| 初级用户 发帖 21 积分 21 | |
|
不好意思,又发现一个问题。
替换后虽然>没有丢失了,但是若被替换的批处理中有!的话,还是会发生问题。 |
|
| 第5楼 kakenhi | 发表于 2009-12-19 20:27 |
| 初级用户 发帖 21 积分 21 | |
|
请问有没有什么解决方法呢?
|
|
| 第6楼 Hanyeguxing | 发表于 2009-12-19 20:36 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
使用call ,本论坛内搜索相关主题
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |