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

这样可以不必理会2.txt末尾是否存在空行:
  1. @echo off
  2. chcp 65001>nul
  3. set x=4
  4. set /a m=x-1
  5. setlocal enabledelayedexpansion
  6. (for /f "delims=" %%i in (1.txt) do (
  7.     if defined Line4 echo,!Line4!
  8.     for /l %%j in (%m%,-1,1) do (
  9.         set /a n=%%j+1
  10.         set Line!n!=!Line%%j!
  11.     )
  12.     set line1=%%i
  13. )
  14. if defined Line4 (
  15.     for /f "delims=" %%i in (2.txt) do echo,%%i
  16.     for /l %%i in (%x%,-1,1) do echo,!Line%%i!
  17. ))>3.txt
  18. pause
复制代码
1

评分人数

TOP

回复 31# qixiaobin0715


     乐于助人
我是小白,希望老师多多帮助

TOP

sed实现在1.txt倒数第四行前插入2.txt,无论2.txt末尾是否存在空行。
  1. sed -n -e ":a;$r 2.txt" -e "$q;N;5,${P;D};ba" 1.txt|sed "${/^$/!s/$/\n/}">1_new.txt
  2. sed ":a;$q;N;5,$D;ba" 1.txt>>1_new.txt
复制代码

TOP

本帖最后由 WHY 于 2024-1-30 17:56 编辑
  1. @echo off
  2. chcp 65001 > nul
  3. for /f "delims=" %%i in (1.txt) do set /a n+=1
  4. (for /f "delims=" %%i in (1.txt) do (
  5.     set /a n-=1
  6.     echo;%%i
  7.     setlocal enabledelayedexpansion
  8.     if !n!==4 (
  9.         endlocal
  10.         for /f "delims=" %%j in (2.txt) do echo;%%j
  11.     ) else endlocal
  12. )) > 3.txt
  13. pause
复制代码

TOP

  1. gawk "NR==FNR{a[NR]=$0}NR>FNR{b[FNR]=$0}END{n=length(a)-4;for(i in a){print a[i];if(i==n)for(j in b)print b[j]}}" 1.txt 2.txt>3.txt
复制代码
1

评分人数

TOP

回复 35# WHY


    乐于助人
我是小白,希望老师多多帮助

TOP

其实用 PowerShell 也还不错,没那么多弯弯绕。保存为 Test.bat运行
  1. @echo off
  2. set n=4
  3. PowerShell "[Collections.ArrayList]$a=gc 1.txt -enc UTF8; $b=gc 2.txt -enc UTF8; $a.Insert($a.Count-%n%, $b); sc 3.txt $a -enc UTF8"
  4. pause
复制代码
1

评分人数

TOP

回复 37# WHY


    乐于助人
我是小白,希望老师多多帮助

TOP

返回列表