中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 00:53
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结]字符串或文本中的感叹号如何替换?
可打印版本  839 / 8
第1楼 lqh123108 发表于 2008-12-25 21:50
初级用户 发帖 24 积分 30
[已结]字符串或文本中的感叹号如何替换?
现有字符串



如何替换成

"真好呀@@@"

这是我的测试代码:


[ Last edited by HAT on 2008-12-26 at 10:45 ]
第2楼 HAT 发表于 2008-12-25 21:53
版主 发帖 5,017 积分 9,023
set /?
Environment variable substitution has been enhanced as follows:

%PATH:str1=str2%

would expand the PATH environment variable, substituting each occurrence
of "str1" in the expanded result with "str2". "str2" can be the empty
string to effectively delete all occurrences of "str1" from the expanded
output. "str1" can begin with an asterisk, in which case it will match
everything from the beginning of the expanded output to the first
occurrence of the remaining portion of str1.
第3楼 lqh123108 发表于 2008-12-25 22:02
初级用户 发帖 24 积分 30
帮我再看看,文本中怎么不行?
多谢了

为什么我直接在CMD窗口中行的

如果该字符串是在文本中,我用FOR去读取,再替换,怎么不成??
第4楼 HAT 发表于 2008-12-25 22:03
版主 发帖 5,017 积分 9,023
Re 3楼
把你的完整代码、详细问题描述更新到顶楼
第5楼 lqh123108 发表于 2008-12-25 22:05
初级用户 发帖 24 积分 30
Originally posted by HAT at 2008-12-25 22:03:
把你的完整代码、详细问题描述更新到顶楼



文本的内容就只有上面这个字符串呀!
第6楼 HAT 发表于 2008-12-25 22:11
版主 发帖 5,017 积分 9,023
第7楼 lqh123108 发表于 2008-12-25 22:42
初级用户 发帖 24 积分 30
还是得不到结果
认真看了一下,学了不少!

有些地方还是不太懂!!

但测试来测试去,还是不得解,这代码到底该怎么写呀?




for /f %%a in (1.txt) do (
set "str=%%a"
setlocal ENABLEDELAYEDEXPANSION
set str=!str:^!=@!
echo !str!
pause)

[ Last edited by lqh123108 on 2008-12-25 at 22:44 ]
第8楼 moniuming 发表于 2008-12-25 23:28
银牌会员 发帖 574 积分 1,335 来自 广西


[ Last edited by moniuming on 2008-12-25 at 23:33 ]
第9楼 lqh123108 发表于 2008-12-26 10:43
初级用户 发帖 24 积分 30
多谢猫兄的指点

谢了


针对文件通过! OK!

for /f "delims=" %%a in (1.txt) do (
set "str=%%a"
call set "str=%%str:!=@%%"
call echo.%%str%%
)
pause>nul&goto :eof

看来,文本中的感叹号的替换不能启用变量延迟,而应该使用跳出循环的办法,防止歧义!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023