Board logo

标题: [文本处理] 【已解决】批处理如何在txt某行前和后添加字符 [打印本页]

作者: wzf1024    时间: 2015-11-28 18:51     标题: 【已解决】批处理如何在txt某行前和后添加字符

本帖最后由 wzf1024 于 2016-2-19 20:39 编辑

请教大侠:
有很多txt文本,需要在某行前或后插入字符,不知如何实现?

比如一个txt:
------------------
1
2
3
4
------------------
我想在第三行前加aaa,行尾加bbb,就成了这样:
-----------------------
1
2
aaa3bbb
4
-----------------------

现有一个代码,但只能操作第一行:
----------------
@echo off
set "行首=$$$$"
set "行尾=####"
for %%a in (*.txt) do (
    set ".="
    (for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%%a"') do (
        if defined . (
            echo,%%b
        ) else (
            if not "%%b"=="" (
                set .=.
                echo %行首%%%b%行尾%
            )
        )
    ))>$
    move $ "%%a"
)
-------------
大侠能改成任意行都能操作吗,就是有变量接受输入的行数?
作者: DAIC    时间: 2015-11-28 18:53

请举例说明
作者: 尘丶    时间: 2015-11-28 19:22

本帖最后由 尘丶 于 2015-11-28 19:25 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=3
  3. ((for /l %%a in (1.txt) do set /p n%%a)<1.txt
  4. for /f "delims=" %%a in (1.txt) do (
  5. set /a k+=1
  6. if not !k!==!n! (echo;%%a) else (echo;aaa%%abbb)
  7. )
  8. )>>$
  9. move $ 1.txt
  10. pause
复制代码
3是行数
作者: DAIC    时间: 2015-11-28 19:46

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 设置在第几行插入
  4. set "Line=3"
  5. REM 设置行首
  6. set "Prefix=BAT"
  7. REM 设置行尾
  8. set "Suffix=VBS"
  9. for %%a in (*.txt) do (
  10.     (for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%%a"') do (
  11.         if %%i equ !Line! (
  12.             echo,%Prefix%%%j%Suffix%
  13.         ) else (
  14.             echo,%%j
  15.         )
  16.     ))>"%%a.tmp"
  17.     move "%%a.tmp" "%%a"
  18. )
复制代码





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