中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 04:02
48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 用for循环进行文本替换,某些特殊字符无法替换。求助!
可打印版本  4,017 / 11
第1楼 diane 发表于 2006-07-13 20:50
新手上路 发帖 1 积分 6
用for循环进行文本替换,某些特殊字符无法替换。求助!
在批处理文件中,将文件a.txt 中的某些文字替换成别的文字
for /f "tokens=* delims= " %%i in (a.txt) do (
set n=%%i
set n=!n:aaa=bbb!
echo !n! | find /I "ECHO"
IF ERRORLEVEL 1 (
echo !n! >> temp.txt
) else (
echo. >>temp.txt
)
)
copy temp.txt a.txt

如果字串aaa中含有空格,或者点号.都不能中正确替换,有哪位大侠有更好的解决方案? 谢谢谢谢谢。。。。
第2楼 buddiyar 发表于 2006-07-15 00:31
初级用户 发帖 75 积分 160
set n=!n:aaa=bbb!

同是新手上路 似乎你比我要厉害哦
呵呵 不介意的话 点解一下这句先

谢谢啊^_^
第3楼 chenall 发表于 2006-07-16 20:36
银牌会员 发帖 469 积分 1,276 来自 福建泉州
按照楼主要求,基本上是无法达到.
只好再加几句替换的命令了.将所有可能的组合全部加进来.
不知这个作什么用,最终的目的是什么?若能再详细一点(最好贴上你的原文件),或许有办法.

TO 2楼的:
set n=!n:aaa=bbb!
将变量n中的aaa替换成bbb
第4楼 willsort 发表于 2006-07-20 01:28
元老会员 发帖 1,512 积分 4,432
Re diane:

set 的串替换是支持 句点和空格 的,请测试以下的示例,正常情况下,它应该显示出的我的英文name。你的问题应该与 a.txt 中的其他内容有关。

另外,echo !n! 至以下数句,可使用一句 echo.!n! >> temp.txt 等同替换。

第5楼 buddiyar 发表于 2006-07-21 20:18
初级用户 发帖 75 积分 160
呵呵 谢谢chenall的解释
不过似乎 willsort大哥的来得更清楚明白一些

一直很敬佩的哦
第6楼 oilio 发表于 2007-01-16 03:00
高级用户 发帖 303 积分 641
晕死了,看不太懂啊。!n!是啥啊?
第7楼 minmin888 发表于 2007-04-21 03:45
初级用户 发帖 62 积分 127
学到东西,多谢willsort
第8楼 xielei198210 发表于 2007-04-24 04:26
新手上路 发帖 2 积分 4
为什么
echo.!n! >> temp.txt
一句可以可以判定echo并删除之呢?
第9楼 xielei198210 发表于 2007-04-24 04:27
新手上路 发帖 2 积分 4
为什么echo.!n! >> temp.txt
可以判定echo非法字符并删除之呢?

并且结果里原来是空格的现在没了,怎么保留空格呢?
并且“!”也无法保留下来,怎么办呢?

[ Last edited by xielei198210 on 2007-4-23 at 03:34 PM ]
第10楼 vkill 发表于 2007-04-25 02:17
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
p处理特殊字符还是很麻烦的
第11楼 qqqrun3 发表于 2010-12-01 23:15
初级用户 发帖 28 积分 59
for /F /L 带此循环
『楼 主』: 用for循环进行文本替换,某些特殊字符无法替换。求助!

在批处理文件中,将文件a.txt 中的某些文字替换成别的文字
for /f "tokens=* delims= " %%i in (a.txt) do (
set n=%%i
set n=!n:aaa=bbb!
echo !n! | find /I "ECHO"
IF ERRORLEVEL 1 (
echo !n! >> temp.txt
) else (
echo. >>temp.txt
)
)
copy temp.txt a.txt

如果字串aaa中含有空格,或者点号.都不能中正确替换,有哪位大侠有更好的解决方案? 谢谢谢谢谢
TO 2楼的:
set n=!n:aaa=bbb!
将变量n中的aaa替换成bbb


@echo off & setlocal EnableDelayedExpansion
for /f "tokens=* delims=" %%i in ("Hello world.") do (
set n=%%i
set n=!n:ld.=t!
set n=!n:o w= S!
set n=!n:He=Wi!
echo !n!
)
第12楼 qqqrun3 发表于 2010-12-01 23:21
初级用户 发帖 28 积分 59
这样的 需dos命令扩展支持的代码的运行环境条件是什么
请教前背: 这样的 setlocal EnableDelayedExpansion 需dos命令扩展支持的代码,dos7.1这样的非windows环境运行码!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023