标题: [文本处理] 批处理怎么在文本文档中隔行后面加入同样内容? [打印本页]
作者: yyyyyzzz 时间: 2012-6-16 14:57 标题: 批处理怎么在文本文档中隔行后面加入同样内容?
比如:
11111111
22222222
33333333
44444444
55555555
66666666
77777777
改成这样
11111111--你好
22222222
33333333--你好
44444444
55555555--你好
66666666
77777777--你好
隔2行怎么写?隔3行怎么写?
刚接触批处理,谢谢了
作者: cb02356828 时间: 2012-6-16 15:10
本帖最后由 cb02356828 于 2012-6-16 15:27 编辑
刚才的测试了一下,错误很多,待会儿再贴上来
作者: yyyyyzzz 时间: 2012-6-16 15:24
cb02356828 你好,
我试了不行呀
作者: cb02356828 时间: 2012-6-16 15:34
回复 3# yyyyyzzz
现在可以了:- @echo off&setlocal enabledelayedexpansion
-
- set/a b=1
- for /f %%i in (原文件.txt) do (
-
- rem 下面这句的2意思是隔1行,隔2行就改成3,隔3行就改成4
- set/a c=!b!%%2
-
- set s=%%i
- if !c! equ 0 ( set s=%%i -- 你好 )
-
- echo !s! >>新文件.txt
- set/a b=!b!+1
-
- )
-
- pause>nul
复制代码
作者: yyyyyzzz 时间: 2012-6-16 15:37
能用了,太谢谢了,
作者: weichenxiehou 时间: 2012-6-16 15:38
回复 4# cb02356828
基本功能是实现了,接下来可以考虑如何规避特殊符号的影响以及如何保留空行和分号开头的行。
作者: CrLf 时间: 2012-6-16 16:56
另两解:- @echo off
- for /f "delims="eol^= %%a in (a.txt) do (
- set /a n=!n,n/n && echo %%a|| echo %%a--你好
- ) 2>nul
- rem 通过非零运算达到区别隔行效果,当 n 为 1,时非零运算结果为 0,导致 n/n 是非法运算,于是可以通过 set /a 的运行成败来区分输出
复制代码
- @echo off
- (for /f "delims=" %%a in ('findstr /n .* a.txt') do (
- setlocal enabledelayedexpansion
- set /p a=
- set /p b=
- echo !a!--你好
- echo !b!
- endlocal
- ))<a.txt
- rem 用 set /p 分行获取文本内容,以便区分输出,不过要清空变量 a 和 b 的内容以防遇到空行,若无空行可以将 ('findstr /n .* a.txt') 改为 (a.txt)
复制代码
作者: forfiles 时间: 2012-6-18 08:32
- gawk "NR%2{$0=$0\"--你好\"}1" a.txt >b.txt
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |