Batch file 使用批处理编程自动化条形码批处理打印
嗨,我正在尝试使用.bat文件自动打印序列条码。我的条形码包含一个13位数字,左侧4位数字为常量(例如“WXYZ000000000”,其中WXYZ为常量,序列化范围为000000000到9999999)。为此,我创建了一个PRN文件Batch file 使用批处理编程自动化条形码批处理打印,batch-file,serialization,printing,barcode,Batch File,Serialization,Printing,Barcode,嗨,我正在尝试使用.bat文件自动打印序列条码。我的条形码包含一个13位数字,左侧4位数字为常量(例如“WXYZ000000000”,其中WXYZ为常量,序列化范围为000000000到9999999)。为此,我创建了一个PRN文件 <xpml><page quantity='0' pitch='25.1 mm'></xpml>SIZE 46.4 mm, 25.1 mm GAP 3 mm, 0 mm DIRECTION 0,0 REFERENCE 0,0 OF
<xpml><page quantity='0' pitch='25.1 mm'></xpml>SIZE 46.4 mm, 25.1 mm
GAP 3 mm, 0 mm
DIRECTION 0,0
REFERENCE 0,0
OFFSET 0 mm
SET TEAR OFF
SET CUTTER OFF
SET PARTIAL_CUTTER OFF
<xpml></page></xpml><xpml><page quantity='0' pitch='25.1 mm'></xpml>DOWNLOAD
"FORM_0.BAS"
BARCODE 496,277,"128",204,0,180,3,6,AA$
CODEPAGE 1252
TEXT 377,65,"0",180,8,8,AB$
EOP
<xpml></page></xpml><xpml><page quantity='1' pitch='25.1 mm'>
</xpml>AA$="WXYZ000000000"
AB$="WXYZ000000000"
SIZE 46.4 mm, 25.1 mm
GAP 3 mm, 0 mm
SET PEEL ON
CLS
RUN "FORM_0.BAS"
PRINT 1,1
<xpml></page></xpml>KILL "FORM_0.BAS"
<xpml><end/></xpml>
逐步更改代码:
%num1add%
。请搜索SO以查找延迟扩展<代码>%num1add%被其初始值替换;要获取运行时值(随着它的变化),您需要!num1add代码>
echo
显示的num1add
已抑制前导零。也可能是回声为!num1add代码>(运行时值)。因此,您的代码会将000000000
替换为1234
,而不是000001234
。解决方法是将数字附加到000000000
,然后获取结果字符串的最后9个字符(!nextnum:~-9!
)-注意这是nextnum
的运行时值的子字符串
8
或9
,并将“00001234”视为668,因此序列将为669670等。set/a
语法使用运行时变量值,除非由于延迟扩展中的原因,参数为%var%
。因此,更简单的代码使用set/a
语法来增加值
哦,不要输入前导零。把它留给批处理。太好了!它的工作,感谢这个有用的信息。竖起大拇指,伙计。
@ECHO OFF
TITLE Barcode printing
ECHO From where to start printing:
SET /P Num1Add=
ECHO How much barcode you want from the first number:
SET /P Num2Add=
ECHO.
setlocal enabledelayedexpansion
FOR /L %%A IN (1,1,%Num2Add%) DO (
powershell -Command "(gc 124.prn) -replace '000000000', '%Num1Add%' | Out File -encoding ASCII 125.prn"
COPY C:\125.PRN /B \\PC1\Printer
set /A Num1Add=!Num1Add!+1
echo !Num1Add!
)
endlocal
FOR /L %%A IN (1,1,%Num2Add%) DO (
set "nextnum=000000000!num1add!"
powershell -Command "(gc 124.prn) -replace '000000000', '!nextnum:~-9!' | Out File -encoding ASCII 125.prn"
COPY C:\125.PRN /B \\PC1\Printer
set /A Num1Add+=1
echo !Num1Add!
)