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

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

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"
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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

评分人数

TOP

回复 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

评分人数

TOP

返回列表