Board logo

标题: [文本处理] [已解决]请问批处理如何在多个文件的指定行插入一行文字? [打印本页]

作者: jzwtxp    时间: 2019-3-18 21:36     标题: [已解决]请问批处理如何在多个文件的指定行插入一行文字?

本帖最后由 jzwtxp 于 2019-4-20 23:58 编辑

比如插入原文的第一行和第二行之间,第二行换行,插入的那一行变成第二行。最好可以指定插入到第几行。

谢先
作者: Batcher    时间: 2019-3-18 22:19

“指定行”就是第一行下面?还是第一个“1.问题:”下面?
作者: jzwtxp    时间: 2019-3-18 22:26

回复 2# Batcher


一页文本的任意行,比如第二行。
作者: yhcfsr    时间: 2019-3-19 09:58

powershell
  1. $spLine=2;                 #指定在第几行之后插入
  2. $str="要插入的内容";         #指定要插入的内容
  3. dir *.txt -r|%{
  4.     [System.Collections.ArrayList] $content=[io.file]::ReadAllLines($_.FullName,[text.encoding]::Default);
  5.     $content.Insert($spLine,$str)
  6.     [io.file]::WriteAllLines($_.FullName,$content,[text.encoding]::Default)
  7. }
复制代码

作者: jzwtxp    时间: 2019-3-19 19:33

回复 4# yhcfsr


   谢谢,如果有bat就更好了,这个我还读不懂,不能跟着学。
作者: zaqmlp    时间: 2019-3-19 19:53

本帖最后由 zaqmlp 于 2019-3-23 21:05 编辑
  1. @echo off
  2. title 互助互利,扫码头像,感谢赞助;有问题,加QQ956535081及时沟通
  3. cd /d "%~dp0"
  4. set "line=2"
  5. set "inserstr=xxxxxxxxxxx"
  6. for /f "delims=" %%a in ('dir /a-d/b *.txt') do (
  7.     echo;"%%a"
  8.     (for /f "tokens=1* delims=:" %%b in ('type "%%a"^|findstr /n .*') do (
  9.         echo;%%c
  10.         if "%%b" equ "%line%" (echo;%inserstr%)
  11.     ))>$tmp
  12.     move /y $tmp "%%a"
  13. )
  14. pause
复制代码

作者: jzwtxp    时间: 2019-3-19 20:08

zaqmlp 发表于 2019-3-19 19:53



    兄弟,这个不好使。还把文本里的内容给弄没了。
作者: zaqmlp    时间: 2019-3-19 20:21

回复 7# jzwtxp
bat不支持非ansi编码
把你的测试文本打包发出来
作者: jzwtxp    时间: 2019-3-19 20:34

回复  jzwtxp
bat不支持非ansi编码
把你的测试文本打包发出来
zaqmlp 发表于 2019-3-19 20:21



    就是空白的文本,我只是想学习这个。
作者: zaqmlp    时间: 2019-3-19 20:37

回复 9# jzwtxp

既然是空白文本,哪里来的1,2行之间呀,根本连一行都没
作者: Batcher    时间: 2019-3-19 21:57

回复 7# jzwtxp


    把你测试用的txt文件和bat文件打包压缩传上来我看下是什么原因
作者: jzwtxp    时间: 2019-3-22 22:45

回复 11# Batcher

]
作者: Batcher    时间: 2019-3-23 09:55

回复 12# jzwtxp


    6楼代码第9行改成 echo;%%c 试试
作者: jzwtxp    时间: 2019-4-20 23:51

回复 13# Batcher


    谢谢大神,好用了。
作者: jzwtxp    时间: 2019-4-20 23:52

回复 6# zaqmlp


    谢谢,按照管理说的修改以后好用了。
作者: 1973435288    时间: 2022-3-8 01:24

回复 6# zaqmlp
可以指定多行吗大佬
作者: 1973435288    时间: 2022-3-8 01:27

回复 13# Batcher


    请问可以指定多行吗
作者: qixiaobin0715    时间: 2022-3-8 09:22

回复 16# 1973435288
可以。比如要指定2、4、6、8、10行。修改6楼代码
第3行修改为:
  1. set "line=2 4 6 8 10"
复制代码
第10行修改为:
  1. for %%i in (%line%) do if "%%b" equ "%%i" (echo;%inserstr%)
复制代码

作者: 5i365    时间: 2022-3-8 10:15

回复 4# yhcfsr


    大侠好, 能实现, 在包含指定字符的行,下方插入吗? 例如, 如果某行包含  司机  二字  ,则在该行的下方插入   辛苦了   三个字,  包含 司机 的行可能会N个
作者: 1973435288    时间: 2022-3-8 18:29

回复 18# qixiaobin0715

感谢大佬




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