![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 08:05 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 读取源文件内容并输出至其他文件时如何保留空行 |
| 可打印版本 1,703 / 15 |
| 第1楼 wingofsea | 发表于 2008-04-25 17:54 |
| 初级用户 发帖 34 积分 124 | |
|
读取源文件内容并输出至其他文件时如何保留空行 需求是:
读取a.txt文件的内容, 并输出至b.txt. a.txt 的内容如下: [1111]: [2222] :[333] [44444] [5555] 666 请注意,.a.txt中包含了 : ] 等 字符, 在本论坛search了一下,没有找到一个reasonable solution,请教各位大牛,多谢 |
|
| 第2楼 pusofalse | 发表于 2008-04-25 18:38 |
| 银牌会员 发帖 646 积分 1,604 | |
|
^_^ 先用findstr读取出行数,包括空行,然后 echo.!str!>>b.txt
for /f "delims=" %%a in ('findstr /n .* a.txt') do ( set str=%%a setlocal enabledelayedexpansion set str=!str:*:=! echo.!str!>>b.txt ) pause [ Last edited by pusofalse on 2008-4-25 at 06:44 PM ] |
|
| 第3楼 naughtypack | 发表于 2008-04-25 20:22 |
| 初级用户 发帖 25 积分 68 | |
|
学习一下,呵呵,高手啊
|
|
| 第4楼 bat-zw | 发表于 2008-04-25 20:22 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
pusofalse进步很快啊,继续加油哈,
其实没其它要求的话还是这个最方便: l [ Last edited by zw19750516 on 2008-4-25 at 08:26 PM ] |
|
| 第5楼 106942397 | 发表于 2008-04-25 20:29 |
| 初级用户 发帖 15 积分 29 | |
|
学习一下,学习一下
|
|
| 第6楼 bjsh | 发表于 2008-04-25 23:48 |
| 银牌会员 发帖 621 积分 2,000 | |
Originally posted by pusofalse at 2008-4-25 06:38 PM: 改成这个 for /f "delims=" %%a in ('findstr /n .* a.txt') do ( set str=%%a setlocal enabledelayedexpansion set str=!str:*:=! echo.!str!>>b.txt endlocal ) pause 不然文件一大 就导致 setlocal 递归过大。。 |
|
| 第7楼 pusofalse | 发表于 2008-04-25 23:53 |
| 银牌会员 发帖 646 积分 1,604 | |
Originally posted by bjsh at 2008-4-25 11:48 PM: |
|
| 第8楼 wingofsea | 发表于 2008-04-28 18:48 |
| 初级用户 发帖 34 积分 124 | |
|
谢啦,同问setlocal 的问题,放到循环外边跟里边的区别在哪?
|
|
| 第9楼 nipo | 发表于 2008-04-29 00:32 |
| 中级用户 发帖 106 积分 228 | |
|
放到循环里边是结束FOR语句的setlocal enabledelayedexpansion,放到外边就结束以上的所有SETLOCAL。
如果在此FOR语句以上还有SETLOCAL,放到外边就都结束了,你下边的环境设置就全变了。 |
|
| 第10楼 pusofalse | 发表于 2008-04-29 00:36 |
| 银牌会员 发帖 646 积分 1,604 | |
Originally posted by nipo at 2008-4-29 12:32 AM: 貌似有点没看懂我问的意思 我是问setlocal放循环里和循环外有何区别,并不是endlocal放里和放外有何区别。。。但同样谢谢你~! |
|
| 第11楼 nipo | 发表于 2008-04-29 00:39 |
| 中级用户 发帖 106 积分 228 | |
|
呵呵,答非所问是吗?
道理其实不都一样吗?放到循环外相当于设置全局变量,放到里面,只是局部变量。起作用的范围不同。 |
|
| 第12楼 bat-zw | 发表于 2008-04-29 00:40 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
运行下面两段代码,你就能理解有什么区别了:
|
|
| 第13楼 pusofalse | 发表于 2008-04-29 00:42 |
| 银牌会员 发帖 646 积分 1,604 | |
Originally posted by zw19750516 at 2008-4-29 12:40 AM: |
|
| 第14楼 nipo | 发表于 2008-04-29 00:49 |
| 中级用户 发帖 106 积分 228 | |
|
咱们一起学习吧(不包括zw19750516,他是老师)
http://www.cn-dos.net/forum/viewthread.php?tid=21322 http://www.cn-dos.net/forum/viewthread.php?tid=25570&fpage=0&highlight=&page=2 [ Last edited by nipo on 2008-4-29 at 01:00 AM ] |
|
| 第15楼 pusofalse | 发表于 2008-04-29 01:00 |
| 银牌会员 发帖 646 积分 1,604 | |
Originally posted by nipo at 2008-4-29 12:49 AM: 我也这样觉得 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |