找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19803|回复: 2

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

[复制链接]
发表于 2022-10-18 06:28:16 | 显示全部楼层 |阅读模式
本帖最后由 思想之翼 于 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(注:最后一个文本,数尾无需添补空行)
发表于 2022-10-18 08:16:06 | 显示全部楼层
  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技术 +1 收起 理由
思想之翼 + 1 乐于助人

查看全部评分

发表于 2022-10-18 08:29:06 | 显示全部楼层
本帖最后由 hfxiang 于 2022-10-18 08:39 编辑

楼上的解法有效,本人的解法有缺陷,已去除
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 11:40 , Processed in 0.018667 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表