标题: [文件操作] 【已解决】生成条码标签BAT代码精简或有更优解 [打印本页]
作者: rockjean 时间: 2019-3-26 16:56 标题: 【已解决】生成条码标签BAT代码精简或有更优解
本帖最后由 rockjean 于 2019-3-27 19:48 编辑
如下代码,不知哪位大神可以指点一二,使之更精简,更合理,更有效率~- @echo off
- setlocal enabledelayedexpansion
-
- ::生成时间戳
- for /f "tokens=1,2,3 delims=/" %%1 in ('echo %date:~0,10%') do set filename=%%1 %%2 %%3
-
- ::开始合并
- for /f "tokens=1,2 delims= " %%a in (01.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 01 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (02.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 02 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (03.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 03 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (04.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 04 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (05.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 05 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (06.txt) do echo %%a 00000%%b 15/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 06 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (07.txt) do echo %%a 00000%%b 15/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 07 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (08.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 08 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (09.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 09 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (10.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 10 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (11.txt) do echo %%a 00000%%b 15/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 11 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (12.txt) do echo %%a 00000%%b 15/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 12 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (13.txt) do echo %%a 00000%%b 15/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 13 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (14.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 14 end>>Chile数据包!filename!.txt
- for /f "tokens=1,2 delims= " %%a in (15.txt) do echo %%a 00000%%b 09/01/2019 CHILE>>Chile数据包!filename!.txt
- echo 15 end>>Chile数据包!filename!.txt
-
- 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大神的代码,只能这样精简一下吧:- @echo off
- setlocal enabledelayedexpansion
-
- ::生成时间戳
- for /f "tokens=1,2,3 delims=/" %%1 in ('echo %date:~0,10%') do set filename=%%1 %%2 %%3
-
- ::开始合并
- (for /f "tokens=1,2 delims= " %%a in (01.txt) do echo %%a 00000%%b 09/01/2019 CHILE
- echo 01 end
- for /f "tokens=1,2 delims= " %%a in (02.txt) do echo %%a 00000%%b 12/01/2019 CHILE
- echo 02 end
- for /f "tokens=1,2 delims= " %%a in (03.txt) do echo %%a 00000%%b 15/03/2019 CHILE
- echo 03 end
- )>>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 |