标题: [文本处理] 批处理如何在文本文件内每隔3行插入同一行内容? [打印本页]
作者: qq570799 时间: 2010-8-2 00:07 标题: 批处理如何在文本文件内每隔3行插入同一行内容?
如何在文本文件内,每隔3行(数值可设)就插入同一行内容(内容可设)
原始文本如下内容:
1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
7777777777
8888888888
9999999999
实现效果如下,每隔3行就插入这个内容:"AAAAAAAAA":
1111111111
2222222222
3333333333
AAAAAAAAA
4444444444
5555555555
6666666666
7777777777
AAAAAAAAA
8888888888
9999999999
谢谢。
作者: wankoilz 时间: 2010-8-2 12:27
被处理文件名为a.txt:- @echo off
- set/p x=输入行数:
- (for /f "delims=" %%i in (a.txt) do (
- echo %%i
- set/a n+=1,m=n%%x,t=1/m 2>nul || echo AAAAAAAAA
- ))>b.txt
复制代码
作者: qq570799 时间: 2010-8-2 16:29
谢谢,达到效果
但要是处理数十万行的文本,速度就好慢的
能做成自动处理目录内的所有文本不,然后结果就保存到目录内的TEMP文件夹内,
原文本不删。
作者: wankoilz 时间: 2010-8-2 19:07 标题: 回复 3楼 的帖子
- @echo off&setlocal enabledelayedexpansion
- md temp
- set/p x=输入行数:
- for %%i in (*.txt) do (
- set n=0
- (for /f "usebackq delims=" %%j in ("%%i") do (
- set/a n+=1,m=n%%x
- echo %%j
- if !m! equ 0 echo AAAAAAAAA
- ))>temp\%%i
- )
复制代码
为提高效率,换用if做判断了。
[ 本帖最后由 wankoilz 于 2010-8-2 19:31 编辑 ]
作者: fanfande 时间: 2010-8-7 11:51
楼上有bug ,提示 ECHO 处于关闭状态。
作者: wankoilz 时间: 2010-8-7 13:03 标题: 回复 5楼 的帖子
对楼上短信的回复:
出现 ECHO 处于关闭状态 的情况可能是由于文本包含空行,在echo后加上个;就可以了,你测试看看。
增加可以自定义插入内容。
- @echo off&setlocal enabledelayedexpansion
- md temp
- set/p x=输入行数:
- set/p y=输入插入内容:
- for %%i in (*.txt) do (
- set n=0
- (for /f "usebackq delims=" %%j in ("%%i") do (
- set/a n+=1,m=n%%x
- echo;%%j
- if !m! equ 0 echo !y!
- ))>temp\%%i
- )
复制代码
[ 本帖最后由 wankoilz 于 2010-8-7 13:05 编辑 ]
作者: fanfande 时间: 2010-8-7 16:28
运行下来还是提示
ECHO 处于关闭状态。
作者: fanfande 时间: 2010-8-7 16:30
我最后加了个pause
看了下提示
以零为除数的错误!
作者: fanfande 时间: 2010-8-7 16:32
楼主是每隔N行插入 固定内容
wankoilz 运行下来是插入了N行内容
作者: wankoilz 时间: 2010-8-7 17:57
原帖由 fanfande 于 2010-8-7 16:32 发表
楼主是每隔N行插入 固定内容
wankoilz 运行下来是插入了N行内容
你确定?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |