[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 3# flashercs


    感谢感谢

TOP

回复 2# went


    感谢大佬,亲测可用,完全实现我说的那些需求

TOP

  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
复制代码
微信:flashercs
QQ:49908356

TOP

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. }
复制代码

TOP

返回列表