Batch file 低批量测试

Batch file 低批量测试,batch-file,Batch File,我试图在一位数前加一个0,数字从1到15。如果数字小于1,那么它可以忽略它。当我运行这个程序时,它崩溃了,说现在不需要10个。我肯定这种方法很糟糕 if %slide1% lss 10 set slide1=0%R1% if %slide2% lss 10 set slide2=0%R2% if %slide3% lss 10 set slide3=0%R3% if %slide4% lss 10 set slide4=0%R4% if %slide5% lss 10 set slide5=0%

我试图在一位数前加一个0,数字从1到15。如果数字小于1,那么它可以忽略它。当我运行这个程序时,它崩溃了,说现在不需要10个。我肯定这种方法很糟糕

if %slide1% lss 10 set slide1=0%R1%
if %slide2% lss 10 set slide2=0%R2%
if %slide3% lss 10 set slide3=0%R3%
if %slide4% lss 10 set slide4=0%R4%
if %slide5% lss 10 set slide5=0%R5%
if %slide6% lss 10 set slide6=0%R6%
if %slide7% lss 10 set slide7=0%R7%
if %slide8% lss 10 set slide8=0%R8%
if %slide9% lss 10 set slide9=0%R9%
if %slide10% lss 10 set slide10=0%R10%
if %slide11% lss 10 set slide11=0%R11%
if %slide12% lss 10 set slide12=0%R12%
if %slide13% lss 10 set slide13=0%R13%
if %slide14% lss 10 set slide14=0%R14%
if %slide15% lss 10 set slide15=0%R15%
if %slide16% lss 10 set slide16=0%R16%

echo %slide1% %slide2% %slide3% %slide4%
echo %slide5% %slide6% %slide7% %slide8%
echo %slide9% %slide10% %slide11% %slide12%
echo %slide13% %slide14% %slide15% %slide16%

对于
1
9
的数字,有一个简单的解决方案,可以获得一个带前导
0
的两位数:

@echo off
set "Number=1"

:Loop
set "TwoDigitNumber=0%Number%"
set "slide%Number%=%TwoDigitNumber:~-2%"
set /A Number+=1
if %Number% LSS 17 goto Loop

echo %slide1% %slide2% %slide3% %slide4%
echo %slide5% %slide6% %slide7% %slide8%
echo %slide9% %slide10% %slide11% %slide12%
echo %slide13% %slide14% %slide15% %slide16%
当前数字作为字符串分配给环境变量
TwoDigitNumber
,前导
0
独立于数字值

然后将
TwoDigitNumber
的最后两个字符作为字符串分配给目标环境变量

退出批处理(无崩溃),并显示错误消息

目前预计不会有10个

很可能是由于某行上的任何
%slideX%
扩展为空,因为没有定义环境变量
slideX
,导致命令行无效:

if lss 10 set slide1=01
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面

  • echo/?
  • goto/?
  • 如果/?
  • 设置/?

对于
1
9
的数字,有一个简单的解决方案,可以获得一个带前导
0
的两位数字:

@echo off
set "Number=1"

:Loop
set "TwoDigitNumber=0%Number%"
set "slide%Number%=%TwoDigitNumber:~-2%"
set /A Number+=1
if %Number% LSS 17 goto Loop

echo %slide1% %slide2% %slide3% %slide4%
echo %slide5% %slide6% %slide7% %slide8%
echo %slide9% %slide10% %slide11% %slide12%
echo %slide13% %slide14% %slide15% %slide16%
当前数字作为字符串分配给环境变量
TwoDigitNumber
,前导
0
独立于数字值

然后将
TwoDigitNumber
的最后两个字符作为字符串分配给目标环境变量

退出批处理(无崩溃),并显示错误消息

目前预计不会有10个

很可能是由于某行上的任何
%slideX%
扩展为空,因为没有定义环境变量
slideX
,导致命令行无效:

if lss 10 set slide1=01
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面

  • echo/?
  • goto/?
  • 如果/?
  • 设置/?

当然可以<此演示批处理代码中的code>Number和
TwoDigitNumber
只是示例。例如,也可以使用
设置“slide1=0%R1%”
并在下一行
设置“slide1=%slide1:~-2%”
<代码>幻灯片1也可以是这两行中的
R1
。也可以使用一行,例如
set“R1=0%R1%”和call set“R1=%%R1:~-2%%”
只使用字母会更短吗?当然<此演示批处理代码中的code>Number和
TwoDigitNumber
只是示例。例如,也可以使用
设置“slide1=0%R1%”
并在下一行
设置“slide1=%slide1:~-2%”
<代码>幻灯片1也可以是这两行中的
R1
。也可以使用一行,例如
set“R1=0%R1%”和call set“R1=%%R1:~-2%%”
只使用字母会更短吗?