![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 08:51 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]替换文本中的指定字符并保留空行 |
| 可打印版本 890 / 7 |
| 第1楼 pusofalse | 发表于 2008-04-27 19:25 |
| 银牌会员 发帖 646 积分 1,604 | |
|
[已结]替换文本中的指定字符并保留空行 刚刚做了一下试验,发现set出现问题了
a.txt的内容 1234 这是我的代码,就是想替换a.txt中的所有d为m,并且保留空行 我深知这代码输出的内容应该是: 1234 但是我的却显示 1234 T.T 哪里出毛病了啊?~ 高人指教! 以前也曾遇到过一回for截取字符串不正确的情况,重装系统之后好了,这回不会还要重装系统吧 原因看2楼和4楼~~ ───────────────── 版务记录 ───────────────── 执行:HAT 操作:在帖子标题中增加搜索关键字 说明:原标题"不要犯同样的错误,关于set赋值"不利于论坛搜索 ───────────────── 版务记录 ───────────────── [ Last edited by HAT on 2008-11-9 at 00:10 ] |
|
| 第2楼 lpk130 | 发表于 2008-04-27 19:40 |
| 初级用户 发帖 30 积分 80 | |
|
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('findstr /n .* a.txt') do ( set str=%%a set str=!str:*:=! set str=!str:d=m! echo.!str! ) pause 红色那句,当str为空的时候出错 |
|
| 第3楼 pusofalse | 发表于 2008-04-27 19:46 |
| 银牌会员 发帖 646 积分 1,604 | |
Originally posted by lpk130 at 2008-4-27 07:40 PM: 你的代码可是可以的,这样的话也能解决问题,但今天下午时我用我那个代码还是好好的,空行也保留着。。。不知为何~ 就用你这个吧~ 谢谢! |
|
| 第4楼 pusofalse | 发表于 2008-04-27 19:52 |
| 银牌会员 发帖 646 积分 1,604 | |
|
OK 我明白原因了,
在被替换之前,str的值始终不能为空,空的话就会出现我那种情况了,如果在替换之后再把:及其前的所有字符删除掉的话,就可以了~ setlocal enabledelayedexpansion for /f "tokens=*" %%a in ('findstr /n .* a.txt') do ( set str=%%a set str=!str:d=m! set str=!str:*:=! echo.!str! ) pause 就像这样~~ 感谢lpk130! |
|
| 第5楼 bat-zw | 发表于 2008-04-27 21:47 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
建议尽量少使用findstr: |
|
| 第6楼 plp626 | 发表于 2008-04-27 22:16 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
楼上ZW兄有所不知:
for /f ('more') echo >nul 2806.7 for 集合里 type 比findstr .*还稍慢呢,最快的当属直接用文件速度是其他的2倍 请看此贴: http://www.cn-dos.net/forum/viewthread.php?tid=39841&fpage=2 |
|
| 第7楼 plp626 | 发表于 2008-04-27 22:19 |
| 银牌会员 发帖 1,020 积分 2,278 | |
Originally posted by pusofalse at 2008-4-27 07:25 PM: 空字符再替换将非空 |
|
| 第8楼 ZJHJ | 发表于 2008-04-27 22:25 |
| 高级用户 发帖 374 积分 609 | |
|
这个我也遇到了.也是求高手解决的,
if not "!var!"=="" |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |