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

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

[复制链接]
发表于 2019-3-26 16:56:59 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码
发表于 2019-3-26 17:02:19 | 显示全部楼层
请介绍一下这个代码主要是为了实现了什么功能?
发表于 2019-3-26 17:10:40 | 显示全部楼层
文件名与日期没有对应规律,不好弄.
你把文件名与日期对应关系做一个列表文件,这样几行代码就搞定了
 楼主| 发表于 2019-3-26 17:18:42 | 显示全部楼层
回复 2# Batcher

    就是做一个这样子的条码标签。
 楼主| 发表于 2019-3-26 17:20:31 | 显示全部楼层
回复 3# yhcfsr


    数据是从客户的电子表格提取出来的,日期没有规律。
 楼主| 发表于 2019-3-26 18:33:09 | 显示全部楼层
回复 2# Batcher

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

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

生成一个文本01.txt,然后再提取军绿的,生成文本02.txt,如此类推。
每个表格的日期可能是不一样的,而且每种颜色的数据后需要隔一个空白,
所以只能先做成01.txt,02.txt,……这个样子,最终再合并。
发表于 2019-3-26 19:16:11 | 显示全部楼层
回复 6# rockjean
50元给你弄个最好的,干不干?
 楼主| 发表于 2019-3-26 19:27:30 | 显示全部楼层
回复 7# happy886rr


    这这这,这让人情何以堪呐?!
目前我的效率已经是同事们的8倍之多,暂且先用这代码吧~
发表于 2019-3-26 19:37:08 | 显示全部楼层
本帖最后由 happy886rr 于 2019-3-26 19:41 编辑

回复 8# rockjean

箱贴条码号已经包含了箱贴号,只需提取箱贴条码一列就行。
很简单的一个问题几行代码搞定,你却用了几十行
 楼主| 发表于 2019-3-26 19:50:59 | 显示全部楼层
回复 9# happy886rr


    我不信几行代码能搞定,因为每个数据之间需要插空白行,而且日期每次都有变动,有可能这次的订单是5个文件,下次是23个文件……
您所说的箱号规律,只能是解决了%%b那里的问题~
发表于 2019-3-26 20:06:12 | 显示全部楼层
本帖最后由 523066680 于 2019-3-26 20:10 编辑

回复 10# rockjean

    happy职业处理过这类条码打印问题,处理过的情况可能还要复杂一些的,你们可以沟通一下。
 楼主| 发表于 2019-3-26 20:06:24 | 显示全部楼层
以我学了批处理几天的功力,参考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
复制代码
经测试,完美通过~
发表于 2019-3-26 21:18:38 | 显示全部楼层
只学了几天很厉害了!

你要处理表格(如xls,xlsx)可以直接用vbs,或者vbs导出01.txt之后再bat处理。
如果你的黑色标签里面有2019-09-01的日期信息,也可以做到直接把01.txt与09/01/2019这个日期关联起来。
 楼主| 发表于 2019-3-27 18:26:36 | 显示全部楼层
回复 13# cutebe


    多谢谬赞,因为觉得批处理好学点,看到VBS头就大了~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 02:29 , Processed in 0.020100 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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