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

[文本处理] 【已解决】BAT:多个文本合并时,如何限定各文本首行的位置

本帖最后由 思想之翼 于 2022-11-2 19:22 编辑

有若干文本,列数相同,每列以Tab符隔开,行数不一,且小于或等于10行,数尾有回车符,格式如下所示。
现欲合并若干文本,并让每一文本首行位于合并文本的第1 11 21 31 41 51...行。

文本一:
1048        1042        1038        1032
2568        .......        2538        2534
5650        .......        5600        .......(注:符号.......意为无数据,即空格)
4947        .......        4917        .......

文本二:
(注:文本二为空)

文本三:
3196        3696        1169        1166
5623        5223        0622        0623
9736        9036        3703        3706
7059        7759        .......        1079
.......        .......        .......        9862

合并后的文本:
1048        1042        1038        1032(注:此为第1行,文本一首行位于第1行)
2568        .......        2538        2534
5650        .......        5600        .......
4947        .......        4917        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......(注:此为第11行,文本二首行位于第11行,例中文本二为空)
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
.......        .......        .......        .......
3196        3696        1169        1166(注:此为第21行,文本三首行位于第21行)
5623        5223        0622        0623
9736        9036        3703        3706
7059        7759        .......        1079
.......        .......        .......        9862(注:最后一个文本,数尾无需添补空行)

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.txt) do (
  4.     set n=10
  5.     if defined str (
  6.         for /f "delims=" %%i in ('type "!str!"') do (
  7.             set /a n-=1
  8.             echo,%%i
  9.         )
  10.         for /l %%j in (1,1,!n!) do echo,
  11.     )
  12.     set str=%%a
  13. )
  14. type !str!
  15. pause
复制代码
1

评分人数

TOP

本帖最后由 hfxiang 于 2022-10-18 08:39 编辑

楼上的解法有效,本人的解法有缺陷,已去除

TOP

返回列表