嗨,我正在尝试自动化我的串行条形码打印使用.bat文件。我的条形码包含一个13位数字,从左侧以4位为常量(例如"WXYZ000000000“,其中WXYZ是常量,序列化从000000000到999999999)。为此,我创建了一个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
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>现在,我所需要的就是用用户定义的条目替换9位零。(前。来自000045785的1000个系列标签。
我写了一个批处理文件,但它似乎是打印相同的条形码。任何帮助都将不胜感激。
@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发布于 2017-12-27 06:03:28
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!
)对代码的更改,一步一步:
%num1add%。请搜索delayed expansion。%num1add%被它的初始值替换;要获得运行时值(当它发生变化时),您需要!num1add!。num1add显示的echo中的前导零被抑制了。还有可能是echo是!num1add! (运行时值)。因此,您的代码应该将000000000替换为1234,而不是000001234。方法是将您的数字附加到000000000中,然后接受结果字符串(!nextnum:~-9!)的最后9个字符--注意这是nextnum运行时值的子字符串。8或9,并将“00001234”视为668,因此系列将是669,670等。set /a语法使用运行时变量值,除非参数是%var%,这是delayed expansion中的原因。因此,使用set /a语法增加值的代码就更简单了。就我个人而言,我会重新考虑你的编号方案,因为13位码在商业中被用作商品标识码(8位和12位;14位数是包裹的代码),所以如果有任何可能使它们变得混乱,毫无疑问,它们将是。
哦-别进前排零。那就交给批次吧。
https://stackoverflow.com/questions/47986651
复制相似问题