[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何在文本文件内每隔3行插入同一行内容?

如何在文本文件内,每隔3行(数值可设)就插入同一行内容(内容可设)

原始文本如下内容:
1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
7777777777
8888888888
9999999999

实现效果如下,每隔3行就插入这个内容:"AAAAAAAAA":
1111111111
2222222222
3333333333
AAAAAAAAA
4444444444
5555555555
6666666666
7777777777
AAAAAAAAA
8888888888
9999999999


谢谢。

被处理文件名为a.txt:
  1. @echo off
  2. set/p x=输入行数:
  3. (for /f "delims=" %%i in (a.txt) do (
  4. echo %%i
  5. set/a n+=1,m=n%%x,t=1/m 2>nul || echo AAAAAAAAA
  6. ))>b.txt
复制代码

TOP

谢谢,达到效果
但要是处理数十万行的文本,速度就好慢的
能做成自动处理目录内的所有文本不,然后结果就保存到目录内的TEMP文件夹内,
原文本不删。

TOP

回复 3楼 的帖子

  1. @echo off&setlocal enabledelayedexpansion
  2. md temp
  3. set/p x=输入行数:
  4. for %%i in (*.txt) do (
  5.     set n=0
  6.     (for /f "usebackq delims=" %%j in ("%%i") do (
  7.     set/a n+=1,m=n%%x
  8.     echo %%j
  9.     if !m! equ 0 echo AAAAAAAAA
  10.     ))>temp\%%i
  11. )
复制代码
为提高效率,换用if做判断了。

[ 本帖最后由 wankoilz 于 2010-8-2 19:31 编辑 ]

TOP

楼上有bug ,提示 ECHO 处于关闭状态。
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

回复 5楼 的帖子

对楼上短信的回复:
出现 ECHO 处于关闭状态 的情况可能是由于文本包含空行,在echo后加上个;就可以了,你测试看看。
增加可以自定义插入内容。
  1. @echo off&setlocal enabledelayedexpansion
  2. md temp
  3. set/p x=输入行数:
  4. set/p y=输入插入内容:
  5. for %%i in (*.txt) do (
  6.     set n=0
  7.     (for /f "usebackq delims=" %%j in ("%%i") do (
  8.     set/a n+=1,m=n%%x
  9.     echo;%%j
  10.     if !m! equ 0 echo !y!
  11.     ))>temp\%%i
  12. )
复制代码

[ 本帖最后由 wankoilz 于 2010-8-7 13:05 编辑 ]

TOP

运行下来还是提示

ECHO 处于关闭状态。
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

我最后加了个pause

看了下提示

以零为除数的错误!
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

楼主是每隔N行插入 固定内容

wankoilz 运行下来是插入了N行内容
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

原帖由 fanfande 于 2010-8-7 16:32 发表
楼主是每隔N行插入 固定内容

wankoilz 运行下来是插入了N行内容

你确定?

TOP

返回列表