返回列表 发帖
本帖最后由 qixiaobin0715 于 2024-1-29 10:17 编辑

这样可以不必理会2.txt末尾是否存在空行:
@echo off
chcp 65001>nul
set x=4
set /a m=x-1
setlocal enabledelayedexpansion
(for /f "delims=" %%i in (1.txt) do (
    if defined Line4 echo,!Line4!
    for /l %%j in (%m%,-1,1) do (
        set /a n=%%j+1
        set Line!n!=!Line%%j!
    )
    set line1=%%i
)
if defined Line4 (
    for /f "delims=" %%i in (2.txt) do echo,%%i
    for /l %%i in (%x%,-1,1) do echo,!Line%%i!
))>3.txt
pauseCOPY
1

评分人数

TOP

回复 31# qixiaobin0715


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

TOP

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

TOP

本帖最后由 WHY 于 2024-1-30 17:56 编辑
@echo off
chcp 65001 > nul
for /f "delims=" %%i in (1.txt) do set /a n+=1
(for /f "delims=" %%i in (1.txt) do (
    set /a n-=1
    echo;%%i
    setlocal enabledelayedexpansion
    if !n!==4 (
        endlocal
        for /f "delims=" %%j in (2.txt) do echo;%%j
    ) else endlocal
)) > 3.txt
pauseCOPY

TOP

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.txtCOPY
1

评分人数

TOP

回复 35# WHY


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

TOP

其实用 PowerShell 也还不错,没那么多弯弯绕。保存为 Test.bat运行
@echo off
set n=4
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"
pauseCOPY
1

评分人数

TOP

回复 37# WHY


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

TOP

返回列表