楼 主
用for循环进行文本替换,某些特殊字符无法替换。求助!
发表于 2006-07-13 20:50 · 中国 上海 联通
新手上路
★
积分 6 发帖 1 注册 2006-07-13 20:21 19年会员 UID 58532 性别 女
状态 离线
在批处理文件中,将文件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 楼
发表于 2006-07-15 00:31 · 中国 江苏 苏州 电信
初级用户
★★
积分 160 发帖 75 注册 2006-06-28 01:07 19年会员 UID 57661 性别 男
状态 离线
set n=!n:aaa=bbb!
同是新手上路 似乎你比我要厉害哦
呵呵 不介意的话 点解一下这句先
谢谢啊^_^
第 3 楼
发表于 2006-07-16 20:36 · 中国 福建 泉州 石狮市
银牌会员
★★★
积分 1,276 发帖 469 注册 2002-12-23 13:00 23年会员 UID 586 性别 男 来自 福建泉州
状态 离线
按照楼主要求,基本上是无法达到.
只好再加几句替换的命令了.将所有可能的组合全部加进来.
不知这个作什么用,最终的目的是什么?若能再详细一点(最好贴上你的原文件),或许有办法.
TO 2楼的:
set n=!n:aaa=bbb!
将变量n中的aaa替换成bbb
第 4 楼
发表于 2006-07-20 01:28 · 中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432 发帖 1,512 注册 2002-10-18 00:00 23年会员 UID 19 性别 男
状态 离线
Re diane:
set 的串替换是支持 句点和空格 的,请测试以下的示例,正常情况下,它应该显示出的我的英文name。你的问题应该与 a.txt 中的其他内容有关。
另外,echo !n! 至以下数句,可使用一句 echo.!n! >> temp.txt 等同替换。
@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!
)
※ Batchinger 致 Bat Fans:请访问
批处理编程的异类 ,欢迎交流与共享批处理编程心得!
第 5 楼
发表于 2006-07-21 20:18 · 中国 江苏 苏州 电信
初级用户
★★
积分 160 发帖 75 注册 2006-06-28 01:07 19年会员 UID 57661 性别 男
状态 离线
呵呵 谢谢chenall的解释
不过似乎 willsort大哥的来得更清楚明白一些
一直很敬佩的哦
第 6 楼
发表于 2007-01-16 03:00 · 中国 江苏 连云港 电信
高级用户
★★★
前进者
积分 641 发帖 303 注册 2007-01-10 02:57 19年会员 UID 76009 性别 男
状态 离线
晕死了,看不太懂啊。!n!是啥啊?
我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
第 7 楼
发表于 2007-04-21 03:45 · 中国 广东 中山 电信
初级用户
★★
积分 127 发帖 62 注册 2007-04-19 12:43 19年会员 UID 85744 性别 男
状态 离线
第 8 楼
发表于 2007-04-24 04:26 · 中国 香港
新手上路
★
积分 4 发帖 2 注册 2007-04-20 04:04 19年会员 UID 85797 性别 男
状态 离线
为什么
echo.!n! >> temp.txt
一句可以可以判定echo并删除之呢?
第 9 楼
发表于 2007-04-24 04:27 · 中国 香港
新手上路
★
积分 4 发帖 2 注册 2007-04-20 04:04 19年会员 UID 85797 性别 男
状态 离线
为什么echo.!n! >> temp.txt
可以判定echo非法字符并删除之呢?
并且结果里原来是空格的现在没了,怎么保留空格呢?
并且“!”也无法保留下来,怎么办呢?
[ Last edited by xielei198210 on 2007-4-23 at 03:34 PM ]
第 10 楼
发表于 2007-04-25 02:17 · 中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103 发帖 1,744 注册 2006-01-20 13:00 20年会员 UID 49241 性别 男 来自 甘肃.临泽
状态 离线
第 11 楼
for /F /L 带此循环
发表于 2010-12-01 23:15 · 中国 广东 佛山 电信
初级用户
★
积分 59 发帖 28 注册 2010-11-05 01:45 15年会员 UID 177110 性别 男
状态 离线
『楼 主』: 用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 楼
这样的 需dos命令扩展支持的代码的运行环境条件是什么
发表于 2010-12-01 23:21 · 中国 广东 佛山 电信
初级用户
★
积分 59 发帖 28 注册 2010-11-05 01:45 15年会员 UID 177110 性别 男
状态 离线
请教前背: 这样的 setlocal EnableDelayedExpansion 需dos命令扩展支持的代码,dos7.1这样的非windows环境运行码!
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正