Board logo

标题: [文本处理] [已解决]批处理TXT如何在指定行添加指定内容并保存 [打印本页]

作者: 304230411    时间: 2022-6-3 13:10     标题: [已解决]批处理TXT如何在指定行添加指定内容并保存

请问各位大神,我现在有成千上万个TXT文本。然后我需要在每一个文本里的第307行添加两行内容:
307::123456789
308:23457823
然后,添加完成之后不新建文本。也就是在原有文件的基础上直接在指定行添加指定内容并保存
求各位大神给我一个可以实现以上需求的BAT代码
作者: went    时间: 2022-6-3 13:25

test.bat
ansi编码
  1. #&cls&@cd /d "%~dp0"&powershell -c "Get-Content '%~0' | Out-String | Invoke-Expression" & pause&exit
  2. cls
  3. #文本编码 ascii utf8
  4. $txt_enc = 'utf8'
  5. #插入行数,0开始
  6. $line_num = 306
  7. #插入内容
  8. $insert_txt = @'
  9. 307::123456789
  10. 308:23457823
  11. '@
  12. Get-ChildItem '*.txt' | foreach {
  13.     Write-Host $_.FullName
  14.     $arr = Get-Content $_.FullName -Encoding $txt_enc
  15.     if($arr.Count -ge $line_num){
  16.         &{
  17.             $arr[0..($line_num-1)]
  18.             $insert_txt
  19.             $arr[$line_num..($arr.Count-1)]
  20.         } | Out-File $_.FullName -Encoding $txt_enc
  21.     }
  22. }
复制代码

作者: flashercs    时间: 2022-6-3 13:58

  1. @echo off
  2. cd /d "%~dp0"
  3. powershell -c "gci .\*.txt|foreach-object{$lines=($_|gc -readcount 0);if($lines.count -ge 307){$lines[306]=($lines[306],'123456789','23457823') -join ([environment]::newline);sc -literalpath $_.fullname -value $lines;}}"
  4. pause
  5. exit /b
复制代码

作者: 304230411    时间: 2022-6-3 14:00

回复 2# went


    感谢大佬,亲测可用,完全实现我说的那些需求
作者: 304230411    时间: 2022-6-3 14:01

回复 3# flashercs


    感谢感谢




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