找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29817|回复: 10

[文本处理] [已解决]批处理如何在指定的固定行添加字符?

[复制链接]
发表于 2011-7-30 17:24:11 | 显示全部楼层 |阅读模式
本帖最后由 q115643492 于 2011-7-31 14:12 编辑

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


bb
能达到这种效果吗?应该有点困难吧!
发表于 2011-7-30 19:02:59 | 显示全部楼层
  1. @echo off
  2. (for /l %%a in (1,1,3) do (
  3.     echo,
  4. ))>>a.txt
  5. >>a.txt echo,bb
复制代码
发表于 2011-7-30 19:27:56 | 显示全部楼层

  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
复制代码
发表于 2011-7-30 19:45:26 | 显示全部楼层

  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
复制代码
这个应该还可以
发表于 2011-7-30 19:59:43 | 显示全部楼层
来个自动判断的
  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
复制代码
发表于 2011-7-30 23:08:50 | 显示全部楼层
  1. gawk "{print}END{print "\n\nbbb"}" a.txt >b.txt
复制代码
 楼主| 发表于 2011-7-31 10:13:59 | 显示全部楼层
本帖最后由 q115643492 于 2011-7-31 10:20 编辑

回复 4# 1130342432

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

bb



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

bb
不知道能否达到我的要求,麻烦了!
发表于 2011-7-31 11:05:41 | 显示全部楼层
回复 7# q115643492


请把你的需求更新到顶楼
发表于 2011-7-31 13:26:23 | 显示全部楼层
那要是第六行原来就有内容呢?替换?还是挪到下一行?
 楼主| 发表于 2011-7-31 13:34:05 | 显示全部楼层
回复 9# CrLf


    替换
发表于 2011-7-31 13:49:38 | 显示全部楼层
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 21:24 , Processed in 0.011048 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表