【问题标题】:Issue in Leading zero in CMDCMD中前导零的问题
【发布时间】: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 命令(2030 行)应该看起来更像这样Set /A B8 = var8 * 7Set /A B9 = B1 + B2 + B3 + B4 + B5 + B6 + B7 + B8Set /A B10 = B9 %% 11Set /A B11 = 11- B10。请注意缺少的 % 字符。
  • 领先的 0 将在与 Set /A 的算术运算中被删除,(045 + 012 不等于 057 它等于 57)。此外,0809 前导序列将生成“八进制”错误消息。

标签: batch-file cmd


【解决方案1】:

利用

set /a NUMBER=%fn% + 100000000

1 后跟 8 0s)

然后

echo %al%%NUMBER:~1%%B11%IN >> barcode.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 2012-12-29
    • 1970-01-01
    • 2014-10-23
    相关资源
    最近更新 更多