Board logo

标题: [文本处理] [已解决]批处理如何在指定的固定行添加字符? [打印本页]

作者: q115643492    时间: 2011-7-30 17:24     标题: [已解决]批处理如何在指定的固定行添加字符?

本帖最后由 q115643492 于 2011-7-31 14:12 编辑

比如1.txt
a
a
a
里面有3行字符,我现在想在第6行写入字符bb,中间差几行就空出来,注意是在固定的行,而不是每格六行,为1.txt的第六行
a
a
a


bb
能达到这种效果吗?应该有点困难吧!
作者: CUer    时间: 2011-7-30 19:02

  1. @echo off
  2. (for /l %%a in (1,1,3) do (
  3.     echo,
  4. ))>>a.txt
  5. >>a.txt echo,bb
复制代码

作者: 1130342432    时间: 2011-7-30 19:27

  1. @echo off
  2. for  /f %%i in (1.txt) do echo %%i
  3. for  /l  %%i in (1 1 3) do echo\
  4. echo bb
  5. pause
复制代码

作者: 1130342432    时间: 2011-7-30 19:45

  1. @echo off
  2. (  ( for  /f %%i in (1.txt) do echo %%i )
  3. for  /l  %%i in (1 1 3) do echo\
  4. echo bb  ) >>2.txt
复制代码
这个应该还可以
作者: 601997526    时间: 2011-7-30 19:59

来个自动判断的
  1. @echo off&setlocal enabledelayedexpansion
  2. set test1=a.txt
  3. set test2=http://www.bathome.net/
  4. for /f %%i in ('type %test1%^|find /v /c "*."') do set n1=%%i
  5. echo %n1%
  6. :a
  7. cls
  8. set /p n2=请输入行数
  9. echo %n2%|findstr "^[0-9]*$">nul||goto :a
  10. if %n1% gtr %n2% (set n=%n1%) else (set n=%n2%)
  11. (for /l %%i in (1 1 %n%) do (set x=&set /p x=&echo.!x!&if %%i==%n2% echo.%test2%))<%test1%
  12. pause
复制代码

作者: CUer    时间: 2011-7-30 23:08

  1. gawk "{print}END{print \"\n\nbbb\"}" a.txt >b.txt
复制代码

作者: q115643492    时间: 2011-7-31 10:13

本帖最后由 q115643492 于 2011-7-31 10:20 编辑

回复 4# 1130342432

发现个问题,你这几个代码只能满足,每格几行写入,而不是在固定的行,比如在第五行写入bb,运行两次你的代码,就成了:
a
a
a

bb



bb
我需要的是,只在第五行写入:
a
a
a

bb
不知道能否达到我的要求,麻烦了!
作者: Batcher    时间: 2011-7-31 11:05

回复 7# q115643492


请把你的需求更新到顶楼
作者: CrLf    时间: 2011-7-31 13:26

那要是第六行原来就有内容呢?替换?还是挪到下一行?
作者: q115643492    时间: 2011-7-31 13:34

回复 9# CrLf


    替换
作者: CrLf    时间: 2011-7-31 13:49

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1* delims=:" %%a in (findstr /n .* 1.txt) do (
  3.    if %%a==6 (echo bb) else echo %%b
  4. )
  5. pause
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (1.txt) do (
  3.    if !h! leq 6 set /a n+=1
  4.    if !h! neq 6 (echo %%a) else echo bb
  5. )
  6. pause
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (2 1 6) do (
  3.    set str=
  4.    set /p str=
  5.    echo !str!
  6. )<1.txt
  7. echo bb
  8. more +6 1.txt
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2