![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-26 00:34 |
共 47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何在批处理中实现对文本文档的每一行开头或者末尾加入 |
| 可打印版本 2,118 / 14 |
| 第1楼 liuwei723 | 发表于 2006-04-26 15:08 |
| 新手上路 发帖 5 积分 18 | |
|
如何在批处理中实现对文本文档的每一行开头或者末尾加入 我想在一个文本文档的每一行的开头和结尾加上特定的字符串,请问如何实现?
[ Last edited by liuwei723 on 2006-4-26 at 15:09 ] |
|
| 第2楼 bush | 发表于 2006-04-28 00:51 |
| 银牌会员 发帖 730 积分 2,165 | |
|
dos下,好像这个只有用第三方工具。 vbs的倒好容易。
我以前都是用change.exe来处理文字替换,行首插入稍微麻烦一点 |
|
| 第3楼 Wengier | 发表于 2006-04-28 01:12 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
DOS下倒是可以试试lmod工具来实现,比如说:
type in.txt | lmod start [] end > out.txt 这样就可以在in.txt中每行的开头和结尾加入字符串,并将结果输入到out.txt |
|
| 第4楼 bagpipe | 发表于 2006-04-28 11:44 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
@echo off
setlocal enabledelayedexpansion set mm=%1 set /p start=输入每行开头要添加的字符串: set /p end=输入每行结为要添加的字符串: for /f "tokens=1,2* delims=:" %%i in ('findstr /n . %mm%') do echo ^!start^!%%j^!end^! >>22.txt endlocal 前几天看过无奈何兄的那个前后加符号的回帖,上面的可以过滤空白行,不过生成的文件把以前的空白行删除了,不知道空白行对楼主有用还是没用,还有就是对于" & <"这些字符的处理问题,ECHO命令是不能直接写入生成的,所以需要用^前导字符来进行显示,如果楼主没有其他要求,这个应该差不多也许大概应该可以完成基本的使用了!!!!!!!! |
|
| 第5楼 liuwei723 | 发表于 2006-04-28 19:22 |
| 新手上路 发帖 5 积分 18 | |
Originally posted by bagpipe at 2006-4-28 11:44: 呵呵,谢谢。几位兄弟给我写的代码,我都仔细研究过,总算可以达到要求了。 以前由于对批处理接触的少,所以这方面就不太了解,研究了两天,总算学到了些东西,对批处理有了进一步的了解。现在就是对FOR和SET没有完全搞明白。其帮助文件说的也不太明白,而对于这方面的一些讨论,大多也只有怎么写代码,没有解释其含义的。不知谁能够提供给我一个好点的东西,可以再深层学习一下。 |
|
| 第6楼 bagpipe | 发表于 2006-04-30 12:37 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
http://www.cn-dos.net/forum/viewthread.php?tid=19331&fpage=1&highlight=%2Bbagpipe
论坛中好像很多介绍命令的,自己好好看看,主要是对实践一下,上面的也许对你有帮助 |
|
| 第7楼 liuwei723 | 发表于 2006-04-30 17:55 |
| 新手上路 发帖 5 积分 18 | |
Originally posted by bagpipe at 2006-4-30 12:37: 呵呵,谢谢~后来我专门把for仔细研究了一下,做了些实践,总算把for的几个参数搞明白是怎么回事。这篇文章真的不错,早看我就早点明白了,收藏下拉,呵呵。 |
|
| 第8楼 khw | 发表于 2006-05-02 01:32 |
| 新手上路 发帖 5 积分 10 | |
|
我想在一個文本文檔的每一字後面加上特定的字符串,請問如何實現?
如: 可愛的太陽啊 微微的春風吹 變成: 可-愛-的-太-陽-啊- 微-微-的-春-風-吹- 求各位高手幫忙處理!!!! |
|
| 第9楼 3742668 | 发表于 2006-05-02 08:59 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
Re khw:
如果纯粹地用批处理来解决的在效率以及容错上面不是很理想,而且相对比较繁琐,建议用vbs解决: 保存为 字符处理.vbs 后把要处理的文件拖到它上面或直接双击运行都可以,在弹出的对话框中输入你想插入的符号。 不光可以插入符号,还可以删除和替换符号,具体不足之处自己看着改改吧,windows xp pro sp2下测试通过。 ps:建议单独的问题单独发一个贴。 |
|
| 第10楼 khw | 发表于 2006-05-02 14:55 |
| 新手上路 发帖 5 积分 10 | |
|
3742668版主您好 :
我已測試ok,非常感謝您的詳細解答,真是佩服佩服! khw |
|
| 第11楼 doscc | 发表于 2006-05-02 18:01 |
| 中级用户 发帖 93 积分 256 来自 广东 | |
|
收下脚本.
|
|
| 第12楼 vkill | 发表于 2006-11-04 07:21 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
这个问题sed 解决最好,我感觉~任何字符都经过测试,一句话就可以
sed "s/^/\/span>/;s/\x24/\/span>/" test.txt sed下载:http://www.student.northpark.edu/pemente/sed/gsed407x.zip |
|
| 第13楼 youxi01 | 发表于 2006-11-04 09:58 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
在批处理中,对于空行的问题,似乎可以这样解决:
将原来的for /f "tokens=1,2* delims=:" %%i in ('findstr /n . 1.txt') 改成for /f "tokens=1,2* delims=:" %%i in ('findstr /n .* 1.txt') @echo off setlocal enabledelayedexpansion set /p start=输入每行开头要添加的字符串: set /p end=输入每行结为要添加的字符串: for /f "tokens=1,2* delims=:" %%i in ('findstr /n .* 1.txt') do echo ^!start^!%%j^!end^!>>22.txt pause>nul |
|
| 第14楼 suli2921 | 发表于 2007-07-05 15:43 |
| 新手上路 发帖 1 积分 2 | |
Originally posted by vkill at 2006-11-4 07:21 AM: |
|
| 第15楼 bjsh | 发表于 2007-07-05 22:43 |
| 银牌会员 发帖 621 积分 2,000 | |
|
现在的sed 有个 -i 选项 可以直接作用于 源文件;
实际上 是它自动替你完成了 重定向到临时文件 然后 替换文件的操作. lz的问题 在vim 里的 可视化块 操作里 瞬间就可以完成; 选个好的编辑器 要省时省力的多啊 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |