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

[文本处理] [已解决]批处理怎样把采集数据格式转换成文本文件?

[复制链接]
发表于 2015-6-21 11:54:38 | 显示全部楼层 |阅读模式
有软件导出的数据文本(数据采集记录分类.txt),里面有很多数据格式如下示例文档;

数据采集记录分类.txt  (文档中毎三行为一个数据记录)
  1. 条件06-05数据采集
  2. 39
  3. 25
  4. 条件06-sh10数据采集
  5. 17
  6. 11
  7. 条件06-sh11-21-数据采集
  8. 17
  9. 09
  10. 条件06-改良类-01数据采集
  11. 509
  12. 487
复制代码
想把它转换成下面的样式;也就是毎个记录转成一个独立的文档

条件06-05数据采集.txt
  1. del D:\条件06-05数据采集\39.txt
  2. del D:\条件06-05数据采集\38.txt
  3. del D:\条件06-05数据采集\37.txt
  4. del D:\条件06-05数据采集\36.txt
  5. del D:\条件06-05数据采集\35.txt
  6. del D:\条件06-05数据采集\34.txt
  7. del D:\条件06-05数据采集\33.txt
  8. del D:\条件06-05数据采集\32.txt
  9. del D:\条件06-05数据采集\31.txt
  10. del D:\条件06-05数据采集\30.txt
  11. del D:\条件06-05数据采集\29.txt
  12. del D:\条件06-05数据采集\28.txt
  13. del D:\条件06-05数据采集\27.txt
  14. del D:\条件06-05数据采集\26.txt
  15. del D:\条件06-05数据采集\25.txt
复制代码
条件06-sh10数据采集.txt
  1. del D:\条件06-sh10数据采集\17.txt
  2. del D:\条件06-sh10数据采集\16.txt
  3. del D:\条件06-sh10数据采集\15.txt
  4. del D:\条件06-sh10数据采集\14.txt
  5. del D:\条件06-sh10数据采集\13.txt
  6. del D:\条件06-sh10数据采集\12.txt
  7. del D:\条件06-sh10数据采集\11.txt
复制代码
条件06-sh11-21-数据采集.txt
  1. del D:\条件06-sh11-21-数据采集\17.txt
  2. del D:\条件06-sh11-21-数据采集\16.txt
  3. del D:\条件06-sh11-21-数据采集\15.txt
  4. del D:\条件06-sh11-21-数据采集\14.txt
  5. del D:\条件06-sh11-21-数据采集\13.txt
  6. del D:\条件06-sh11-21-数据采集\12.txt
  7. del D:\条件06-sh11-21-数据采集\11.txt
  8. del D:\条件06-sh11-21-数据采集\10.txt
  9. del D:\条件06-sh11-21-数据采集\09.txt
复制代码
条件06-改良类-01数据采集.txt
  1. del D:\条件06-改良类-01数据采集\509.txt
  2. del D:\条件06-改良类-01数据采集\508.txt
  3. del D:\条件06-改良类-01数据采集\507.txt
  4. del D:\条件06-改良类-01数据采集\506.txt
  5. del D:\条件06-改良类-01数据采集\505.txt
  6. del D:\条件06-改良类-01数据采集\504.txt
  7. del D:\条件06-改良类-01数据采集\503.txt
  8. del D:\条件06-改良类-01数据采集\502.txt
  9. del D:\条件06-改良类-01数据采集\501.txt
  10. del D:\条件06-改良类-01数据采集\500.txt
  11. del D:\条件06-改良类-01数据采集\499.txt
  12. del D:\条件06-改良类-01数据采集\498.txt
  13. del D:\条件06-改良类-01数据采集\497.txt
  14. del D:\条件06-改良类-01数据采集\496.txt
  15. del D:\条件06-改良类-01数据采集\495.txt
  16. del D:\条件06-改良类-01数据采集\494.txt
  17. del D:\条件06-改良类-01数据采集\493.txt
  18. del D:\条件06-改良类-01数据采集\492.txt
  19. del D:\条件06-改良类-01数据采集\491.txt
  20. del D:\条件06-改良类-01数据采集\490.txt
  21. del D:\条件06-改良类-01数据采集\489.txt
  22. del D:\条件06-改良类-01数据采集\488.txt
  23. del D:\条件06-改良类-01数据采集\487.txt
复制代码
我现在转换是用excel下手工转,太多太麻烦还出差,想请大家看看能用批处理解决不,或者别的简洁方式,谢谢!

评分

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

查看全部评分

发表于 2015-6-21 20:20:39 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%a in (数据采集记录分类.txt) do (
  4.       set/a n+=1
  5.           set #!n!=%%a
  6.           if !n!==3 (
  7.           set n=0
  8.           if !#2! lss 10 set/a #2=1!#2!-100
  9.           if !#3! lss 10 set/a #3=1!#3!-100
  10.           for /l %%b in (!#3!,1,!#2!) do (
  11.           if %%b lss 10 (set #=0%%b) else (set #=%%b)
  12.                     echo,del d:\!#1!\!#!.txt
  13.           )
  14.           )
  15.       )
  16.           pause
复制代码
发表于 2015-6-22 12:12:21 | 显示全部楼层
本帖最后由 dizimotong 于 2015-6-22 12:52 编辑

我是新手,也尝试了一下写了以下代码,自己测试可以,希望帮到你

  1. @echo off&setlocal EnableDelayedExpansion

  2. for /f %%i in (数据采集记录分类.txt) do (
  3.         set /a flag=0
  4.         echo %%i|findstr "条件" >nul && (set name=%%i & set num=1) || set /a flag=1
  5.         set name=!name: =!
  6.        

  7.         if !flag! equ 1 (
  8.                 if "!num!"=="1" (
  9.                         set start=%%i
  10.                         set num=2
  11.                         set /a flag=0
  12.                 )
  13.         )
  14.         if !flag! equ 1 (
  15.                 if "!num!"=="2" (
  16.                         set end=%%i
  17.                         if !start! lss 10 set /a start=1!start!-100
  18.                         if !end! lss 10 set /a end=1!end!-100
  19.                         for /l %%j in (!start!,-1,!end!) do (
  20.                                 if %%j lss 10 ( echo del D:\!name!\0%%j.txt >>!name!.txt )else (
  21.                                         echo del D:\!name!\%%j.txt >>!name!.txt )
  22.                         )
  23.                 )
  24.         )

  25.        
  26. )
复制代码
发表于 2015-6-22 12:51:24 | 显示全部楼层
看了2楼的代码,发现自己的有漏洞,已经修改过来,同时觉得2楼的代码比较简洁,学写了
发表于 2015-6-22 13:18:03 | 显示全部楼层
回复 4# dizimotong
其实还有漏洞,你改一组数据,101-009看看
发表于 2015-6-22 14:12:46 | 显示全部楼层
凑个数

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (数据采集记录分类.txt) do (
  3.     set /a n=n%%3+1
  4.     set _!n!=%%a
  5.     if !n! equ 3 (
  6.             set l=!_3!fedcba9876543210
  7.             set /a l=!l:~15,1!
  8.             for %%b in (!l!) do (
  9.                 for /l %%c in (1!_2!,-1,1!_3!) do (
  10.                     set _=%%c
  11.                     echo,del D:\!_1!\!_:~-%%b!.txt
  12.                 )
  13.             )
  14.     )>!_1!.txt
  15. )
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-6-22 16:17:43 | 显示全部楼层
回复 7# xxpinqz
感谢你的提醒,看了你的代码,并且测试了一下,很简洁,而且解决了bug,学习了!
 楼主| 发表于 2015-6-29 23:51:35 | 显示全部楼层
谢谢大家!根据你们的代码修改了一下,已经完全搞定!万分感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 00:05 , Processed in 0.020360 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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