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

[文本处理] 【已解决】BAT脚本如何按特定行列分割文件

[复制链接]
发表于 2023-8-29 13:19:21 | 显示全部楼层 |阅读模式
D:\DATA1\A.txt记录数据如下
白产车才
白产车才
手及口立
手及口立
乃力个又
乃力个又

欲将A.txt 按字符分割成4列,且各列的每2行,再分割成3个文件。

输出结果为:
D:\DATA2\01\A_0001.txt记录数据为:


D:\DATA2\01\A_0002.txt记录数据为:


D:\DATA2\01\A_0003.txt记录数据为:


D:\DATA2\01\A_0004.txt记录数据为:


---------------------------------------
D:\DATA2\02\A_0001.txt记录数据为:


D:\DATA2\02\A_0002.txt记录数据为:


D:\DATA2\02\A_0003.txt记录数据为:


D:\DATA2\02\A_0004.txt记录数据为:


---------------------------------------
D:\DATA2\03\A_0001.txt记录数据为:


D:\DATA2\03\A_0002.txt记录数据为:


D:\DATA2\03\A_0003.txt记录数据为:


D:\DATA2\03\A_0004.txt记录数据为:


---------------------------------------
注:cut gawk 可以分步实现
  1. cut -c 1-2 A.txt>B.txt
  2. gawk "NR%%2==1{close(n".txt");++n}{print>n".txt"}" "A.txt"
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-8-29 14:21:31 | 显示全部楼层
  1. setlocal enabledelayedexpansion
  2. set /a h=2
  3. set /a c=4-1

  4. set /a line=0
  5. for /f "delims=" %%i in (A.txt) do (
  6.     set /a n=line/%h%+1
  7.     set "d=00!n!"
  8.     md !d:~-2!
  9.     set "p=%%i"
  10.     for /l %%a in (0,1,%c%) do if not "!p:~%%a,1!"=="" (
  11.         set /a t=%%a+1
  12.         set "t=0000!t!"
  13.         >>!d:~-2!\A_!t:~-4!.txt echo,!!p:~%%a,1!
  14.         )
  15.     set /a line+=1
  16.     )
  17. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 乐于助人

查看全部评分

发表于 2023-8-29 19:06:39 | 显示全部楼层
回复 1# 思想之翼

以下是gawk方案
注意:"D:\DATA2\A.txt"需保存为ANSI编码格式,对应的文件夹(如“D:\DATA2\01\”等)需提前建立
1.命令行方式(单百分号%)

  1. gawk -v"FS=" -v"pt=D:/DATA2/" "NR%2==1{++n;for(i=1;i<=NF;i++){close(Fn[i]);Fn[i]=sprintf("%s%02d/A_%04d.txt",pt,n,i)}}{for(i=1;i<=NF;i++){print $i>Fn[i]}}" "D:\DATA2\A.txt"
复制代码
2.脚本方式(双百分号%)

  1. gawk -v"FS=" -v"pt=D:/DATA2/" "NR%%2==1{++n;for(i=1;i<=NF;i++){close(Fn[i]);Fn[i]=sprintf("%%s%%02d/A_%%04d.txt",pt,n,i)}}{for(i=1;i<=NF;i++){print $i>Fn[i]}}" "D:\DATA2\A.txt"
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 13:16 , Processed in 0.028588 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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