【发布时间】:2022-11-15 04:30:55
【问题描述】:
我制作了一个 CMD 批处理文件来生成条形码编号。批处理脚本通过计算生成最后第九个条码,并生成名为“barcode.txt”的文件。代码工作正常。唯一的问题是当“fn”数字“条形码八位”以零开头时,代码无法正常工作。
@echo off
setlocal EnableDelayedExpansion
set /p al=Please enter Alfa two digit:
set /p fn=Please enter Barcode Eight Digit:
set /p no=Please enter number of Barode:
set /a NUMBER=%fn%
set /a to=%no%
set /a count=1
pause
:loop
if %count% GTR %to% GOTO :end
set var1=%NUMBER:~0, 1%
set var2=%NUMBER:~1, 1%
set var3=%NUMBER:~2, 1%
set var4=%NUMBER:~3, 1%
set var5=%NUMBER:~4, 1%
set var6=%NUMBER:~5, 1%
set var7=%NUMBER:~6, 1%
set var8=%NUMBER:~7, 1%
set /A B1 = %var1% * 8
set /A B2 = %var2% * 6
set /A B3 = %var3% * 4
set /A B4 = %var4% * 2
set /A B5 = %var5% * 3
set /A B6 = %var6% * 5
set /A B7 = %var7% * 9
set /A B8 = %var8% * 7
set /A B9 = %B1% + %B2% + %B3% + %B4% + %B5% + %B6% + %B7% + %B8%
set /A B10 = (%B9%) %% 11
set /A B11 = 11- %B10%
if "%B11%"=="10" (set B11=0)
if "%B11%"=="11" (set B11=5)
echo %al%%NUMBER%%B11%IN >> barcode.txt
set /a NUMBER+=1
set /a count+=1
goto loop
:end
echo end it
pause
我试图找到解决方案但失败了。当数字从零开始时,请任何人帮我解决这个问题。
【问题讨论】:
-
首先,当您不进行算术运算时,不要使用
Set /A。因此,首先将set /a NUMBER=%fn%、set "NUMBER=%fn%"、set /a to=%no%、set "to=%no%"和set /a count=1更改为set "count=1"。 -
然后所有其他
Set /A命令(20到30行)应该看起来更像这样Set /A B8 = var8 * 7、Set /A B9 = B1 + B2 + B3 + B4 + B5 + B6 + B7 + B8、Set /A B10 = B9 %% 11、Set /A B11 = 11- B10。请注意缺少的%字符。 -
领先的
0将在与Set /A的算术运算中被删除,(045 + 012不等于057它等于57)。此外,08和09前导序列将生成“八进制”错误消息。
标签: batch-file cmd