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

[文本处理] 【已解决】批处理将txt文本内容按指定格式处理后输出到新的文本里?

[复制链接]
发表于 2016-6-28 14:21:28 | 显示全部楼层 |阅读模式
有点复杂,附件中有格式。

原数据格式
数据1
数据2
数据3
……

原txt文件都是一列数据,为了方便利用excel等做分析,先对其格式做处理,需要两个批处理文件代码处理。

格式1: 第一行是(文件名)(tab键)( 1)
            第二行是(0.1)(tab键)(数据1)
            第三行是(0.2)(tab键)(数据2)
                        ...
实际文件中不需要上面的括号;也就是原数据前多加一行,并且原数据每行前面加数字,这些数字竖向看刚好是0.1为首项,0.1为公差的等差数列。


格式2:第一行是(文件名)(tab键)(2)
           第二行是(0.1)(tab键)(数据1)(tab键)(数据2)
           第三行是(0.2)(tab键)(数据3)(tab键)(数据4)
                       ...
格式2实际文件中也不需要上面的括号,数据部分是把原文件中的数据每两行并一行的。

tab键控制宽度,一列数据首字符开始到下列字符宽度为8。

评分

参与人数 1PB -3 收起 理由
pcl_test -3 勿发笼统的标题

查看全部评分

发表于 2016-6-28 23:07:35 | 显示全部楼层
本帖最后由 pcl_test 于 2016-6-29 12:42 编辑

关于格式1:
我只能作到,没有小数点的部分。
还请其他高手指点。

[c39_temp1.txt]
c39        1  
1        0.24  
2        14.6  
3        0.59  
...

[Dat代码]:

  1. @echo off
  2. echo ---------------------------------
  3. echo Format one
  4. echo ---------------------------------
  5. :: Step1, Catch all txt file and save to namelist.txt
  6. if exist namelist.txt del namelist.txt
  7. if exist namelist.lst del namelist.lst
  8. for %%i in (*.txt) do echo %%i>>namelist.lst
  9. cd.>namelist.txt
  10. for /f "tokens=1,2  delims=." %%J in (namelist.lst) do echo %%J >>namelist.txt
  11. del namelist.lst

  12. :: Step2, add number to collumn 1
  13. setlocal enabledelayedexpansion
  14. for /f %%C in (namelist.txt) do (
  15.         set n=0
  16.         for /f "delims=" %%a in (%%C.txt) do (
  17.             set /a n=n+1
  18.             if "!n!"==""1"" cd.>%%C_temp.txt else (
  19.             echo !n!        %%a>>%%C_temp.txt
  20. )
  21. )
  22. )

  23. :: Step3, add file name to row1
  24. for /f %%C in (namelist.txt) do (
  25. for /f "tokens=1,2 delims=        " %%d in (%%C_temp.txt) do (
  26.     if "%%d"=="1" echo %%C        1 >>%%C_temp1.txt
  27.      echo %%d        %%e >>%%C_temp1.txt
  28. )
  29. )
  30. del namelist.txt
  31. del *temp.txt
  32. pause
复制代码
发表于 2016-6-28 23:41:28 | 显示全部楼层
发表于 2016-6-29 00:22:30 | 显示全部楼层
论坛过滤了TAB键已上传文件
大小: 603 字节
修改时间: 2016年6月29日, 0:41:46
MD5: B3ADDFF0A458C703BFCA291997A55F68
SHA1: C35DDE2A2D9206ACB5DAEDDBACAFE4D438C5BE35
CRC32: 85E14D55
发表于 2016-6-29 00:55:49 | 显示全部楼层
回复 4# /zhqsystem/zhq
测试能保留tab字符
  1. 1        2        3
复制代码
当然也可以这样
  1. @echo off
  2. for /f "delims=U" %%a in ('cmd /u /c echo 唉') do set "tab=%%a"
  3. echo;1%tab%2%tab%3
  4. pause
复制代码
发表于 2016-6-29 02:19:41 | 显示全部楼层
本帖最后由 /zhqsystem/zhq 于 2016-6-29 02:26 编辑

回复 5# pcl_test
我比较关心第一种,你是怎么打上去的,晕死啊,改了好几次也没打上去
  1. " "
复制代码
 楼主| 发表于 2016-6-29 11:31:05 | 显示全部楼层
本帖最后由 mydreamspace 于 2016-6-29 13:49 编辑

回复 4# /zhqsystem/zhq


    好厉害,测试转换后的两种格式文件都可以用。其中有段是判断行数的在我这里有特别的用处,错误的就是数据有问题,这个真心不错。
    但是能拆开做成两个批处理吗?有时候只要格式1,有时候用格式2,两种格式一次全都做出来可能会多一倍时间
 楼主| 发表于 2016-6-29 11:35:50 | 显示全部楼层
本帖最后由 mydreamspace 于 2016-6-29 11:38 编辑

回复 2# jrx401


    你这个形式看起来对的,但是1.没有用tab键隔开,你这好像是空格隔开的;例如123       123,用tab键的话1到下个1是8个字符间距,但往前删除那个空档按一下删除键就删除掉了就对的,按很多下才能删除那用的就是空格隔开。
2.第一行输出没有提示文件名和格式:  (文件名)(tab)(1)这样
发表于 2016-6-29 22:30:40 | 显示全部楼层
回复 7# mydreamspace
复制两次,删除对应的导出行就行了,其他最好不动
有些是带关联的上一个没有值下一个不能计算
单行的格式是在计算整体余数为0时才执行
有多余无用的变量主要是编写时复制方便没怎么改
总体速度慢在导出和计算
发表于 2016-6-29 22:37:48 | 显示全部楼层
回复 6# /zhqsystem/zhq


    可以现在你自己电脑上的文本编辑器里面写好,再复制粘贴到论坛上,这样TAB是可以保留住的。
发表于 2016-6-29 22:49:53 | 显示全部楼层
原数据每行前面加数字,这些数字竖向看刚好是0.1为首项,0.1为公差的等差数列。

这个用Excel来操作也挺快的:
复制txt文件内容到B列
A1单元格填写 0.1
A2单元格填写 0.2
选中A1和A2
双击右下角的小方块
它会自动填充数字序列
发表于 2016-6-30 07:23:35 | 显示全部楼层
回复  jrx401


    你这个形式看起来对的,但是1.没有用tab键隔开,你这好像是空格隔开的;例如123    ...
mydreamspace 发表于 2016-6-29 11:35



    我这边运行结果是 有名称和Tab的。
    可否提供一下你那边运行的结果呢?
 楼主| 发表于 2016-6-30 07:37:14 | 显示全部楼层
本帖最后由 mydreamspace 于 2016-6-30 08:28 编辑

回复 12# jrx401


    我又试了下,可以的,就是等差数列不对!上次估计我复制代码没复制好,你写的可读性很好
 楼主| 发表于 2016-6-30 07:38:53 | 显示全部楼层
回复 11# GNU


    就是有很多txt,都要手工操作吃不消啊,批处理完就可以用了
 楼主| 发表于 2016-6-30 07:41:45 | 显示全部楼层
本帖最后由 mydreamspace 于 2016-6-30 07:58 编辑

回复 9# /zhqsystem/zhq


    哈!试了,可以的,复制成两个,每个都删除另一个格式的输出变快了不少
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 10:36 , Processed in 0.023750 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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