Board logo

标题: [文件操作] 【已解决】生成条码标签BAT代码精简或有更优解 [打印本页]

作者: rockjean    时间: 2019-3-26 16:56     标题: 【已解决】生成条码标签BAT代码精简或有更优解

本帖最后由 rockjean 于 2019-3-27 19:48 编辑

如下代码,不知哪位大神可以指点一二,使之更精简,更合理,更有效率~
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::生成时间戳
  4. for /f "tokens=1,2,3 delims=/" %%1 in ('echo %date:~0,10%') do set filename=%%1 %%2 %%3
  5. ::开始合并
  6. for /f "tokens=1,2 delims= " %%a in (01.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
  7. echo 01 end>>Chile数据包!filename!.txt
  8. for /f "tokens=1,2 delims= " %%a in (02.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
  9. echo 02 end>>Chile数据包!filename!.txt
  10. for /f "tokens=1,2 delims= " %%a in (03.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
  11. echo 03 end>>Chile数据包!filename!.txt
  12. for /f "tokens=1,2 delims= " %%a in (04.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
  13. echo 04 end>>Chile数据包!filename!.txt
  14. for /f "tokens=1,2 delims= " %%a in (05.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
  15. echo 05 end>>Chile数据包!filename!.txt
  16. for /f "tokens=1,2 delims= " %%a in (06.txt) do echo %%a 00000%%b 15/01/2019 CHILE>>Chile数据包!filename!.txt
  17. echo 06 end>>Chile数据包!filename!.txt
  18. for /f "tokens=1,2 delims= " %%a in (07.txt) do echo %%a 00000%%b 15/01/2019 CHILE>>Chile数据包!filename!.txt
  19. echo 07 end>>Chile数据包!filename!.txt
  20. for /f "tokens=1,2 delims= " %%a in (08.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
  21. echo 08 end>>Chile数据包!filename!.txt
  22. for /f "tokens=1,2 delims= " %%a in (09.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
  23. echo 09 end>>Chile数据包!filename!.txt
  24. for /f "tokens=1,2 delims= " %%a in (10.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
  25. echo 10 end>>Chile数据包!filename!.txt
  26. for /f "tokens=1,2 delims= " %%a in (11.txt) do echo %%a 00000%%b 15/01/2019 CHILE>>Chile数据包!filename!.txt
  27. echo 11 end>>Chile数据包!filename!.txt
  28. for /f "tokens=1,2 delims= " %%a in (12.txt) do echo %%a 00000%%b 15/01/2019 CHILE>>Chile数据包!filename!.txt
  29. echo 12 end>>Chile数据包!filename!.txt
  30. for /f "tokens=1,2 delims= " %%a in (13.txt) do echo %%a 00000%%b 15/01/2019 CHILE>>Chile数据包!filename!.txt
  31. echo 13 end>>Chile数据包!filename!.txt
  32. for /f "tokens=1,2 delims= " %%a in (14.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
  33. echo 14 end>>Chile数据包!filename!.txt
  34. for /f "tokens=1,2 delims= " %%a in (15.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
  35. echo 15 end>>Chile数据包!filename!.txt
  36. del *.bat
复制代码

作者: Batcher    时间: 2019-3-26 17:02

请介绍一下这个代码主要是为了实现了什么功能?
作者: yhcfsr    时间: 2019-3-26 17:10

文件名与日期没有对应规律,不好弄.
你把文件名与日期对应关系做一个列表文件,这样几行代码就搞定了
作者: rockjean    时间: 2019-3-26 17:18

回复 2# Batcher

    就是做一个这样子的条码标签。
作者: rockjean    时间: 2019-3-26 17:20

回复 3# yhcfsr


    数据是从客户的电子表格提取出来的,日期没有规律。
作者: rockjean    时间: 2019-3-26 18:33

回复 2# Batcher

    需要从这样的表格里提取数据,先提取黑色的

只有那个箱贴条码号与箱贴号有用,提出来的结果如下

生成一个文本01.txt,然后再提取军绿的,生成文本02.txt,如此类推。
每个表格的日期可能是不一样的,而且每种颜色的数据后需要隔一个空白,
所以只能先做成01.txt,02.txt,……这个样子,最终再合并。
作者: happy886rr    时间: 2019-3-26 19:16

回复 6# rockjean
50元给你弄个最好的,干不干?
作者: rockjean    时间: 2019-3-26 19:27

回复 7# happy886rr


    这这这,这让人情何以堪呐?!
目前我的效率已经是同事们的8倍之多,暂且先用这代码吧~
作者: happy886rr    时间: 2019-3-26 19:37

本帖最后由 happy886rr 于 2019-3-26 19:41 编辑

回复 8# rockjean

箱贴条码号已经包含了箱贴号,只需提取箱贴条码一列就行。
很简单的一个问题几行代码搞定,你却用了几十行
作者: rockjean    时间: 2019-3-26 19:50

回复 9# happy886rr


    我不信几行代码能搞定,因为每个数据之间需要插空白行,而且日期每次都有变动,有可能这次的订单是5个文件,下次是23个文件……
您所说的箱号规律,只能是解决了%%b那里的问题~
作者: 523066680    时间: 2019-3-26 20:06

本帖最后由 523066680 于 2019-3-26 20:10 编辑

回复 10# rockjean

    happy职业处理过这类条码打印问题,处理过的情况可能还要复杂一些的,你们可以沟通一下。
作者: rockjean    时间: 2019-3-26 20:06

以我学了批处理几天的功力,参考Batcher大神的代码,只能这样精简一下吧:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::生成时间戳
  4. for /f "tokens=1,2,3 delims=/" %%1 in ('echo %date:~0,10%') do set filename=%%1 %%2 %%3
  5. ::开始合并
  6. (for /f "tokens=1,2 delims= " %%a in (01.txt) do echo %%a 00000%%b 09/01/2019 CHILE
  7. echo 01 end
  8. for /f "tokens=1,2 delims= " %%a in (02.txt) do echo %%a 00000%%b 12/01/2019 CHILE
  9. echo 02 end
  10. for /f "tokens=1,2 delims= " %%a in (03.txt) do echo %%a 00000%%b 15/03/2019 CHILE
  11. echo 03 end
  12. )>>Chile数据包!filename!.txt
复制代码
经测试,完美通过~
作者: cutebe    时间: 2019-3-26 21:18

只学了几天很厉害了!

你要处理表格(如xls,xlsx)可以直接用vbs,或者vbs导出01.txt之后再bat处理。
如果你的黑色标签里面有2019-09-01的日期信息,也可以做到直接把01.txt与09/01/2019这个日期关联起来。
作者: rockjean    时间: 2019-3-27 18:26

回复 13# cutebe


    多谢谬赞,因为觉得批处理好学点,看到VBS头就大了~




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2