本帖最后由 yhcfsr 于 2019-1-7 23:50 编辑
脚本语言:BAT+Powershell 5.0
测试环境:WIN10
思路:在a.txt非空行与空行之间,依次取b.txt的两行插入- <# :********非修改区开始**********
- @echo off
- more +7 "%~f0" >"%~n0.ps1"
- powershell -Mta -NoLogo -NoProfile -ExecutionPolicy bypass -File "%~n0.ps1"
- del /f /q "%~n0.ps1"
- ********非修改区结束**********#>
-
- $contentA=[io.file]::ReadAllLines('D:\test\work\a.txt',[text.encoding]::Default);#读A文件
- $contentB=[io.file]::ReadAllLines('D:\test\work\b.txt',[text.encoding]::Default);#读B文件
-
- [System.Collections.ArrayList] $result=@();
- $sum=0;
- foreach($lineA in $contentA)
- {
- if($lineA){[void] $result.Add($lineA);$blank=$false;}
- else{
- if($contentB[$sum] -and !$blank){do{[void] $result.Add($contentB[$sum++]);}while($sum%2 -ne 0)}#出现空行时,插入b.txt两行
- [void] $result.Add($lineA);
- $blank=$true;
- }
- }
- if($lineA -and $contentB[$sum]){do{[void] $result.Add($contentB[$sum++]);}while($sum%2 -ne 0)}#a.txt结尾无空行时插入b.txt两行
- [io.file]::WriteAllLines('result.txt',$result,[text.encoding]::Default);#输出结果
- pause
复制代码
|