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

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

有软件导出的数据文本(数据采集记录分类.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下手工转,太多太麻烦还出差,想请大家看看能用批处理解决不,或者别的简洁方式,谢谢!
1

评分人数

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

谢谢大家!根据你们的代码修改了一下,已经完全搞定!万分感谢!!

TOP

回复 7# xxpinqz
感谢你的提醒,看了你的代码,并且测试了一下,很简洁,而且解决了bug,学习了!

TOP

凑个数
  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

评分人数

初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 4# dizimotong
其实还有漏洞,你改一组数据,101-009看看
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

看了2楼的代码,发现自己的有漏洞,已经修改过来,同时觉得2楼的代码比较简洁,学写了

TOP

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

TOP

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

TOP

返回列表