为什么这个批处理脚本不能正常工作

时间:2013-08-28 02:47:19

标签: loops batch-file for-loop cmd

这个脚本出了什么问题?

@echo off

SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

set /P start= Input start : %=%
set /P end= Input End : %=%

for /l %%i IN (%start%,1,%end%) DO (
    set num=0%%i
    set num=!num:~-2!
    echo wget "http://portal/excel!num!.xls"
)
pause

如果Input start = 01Input End = 06,则可以正常工作,并且可以下载excel文件。结果:

Input start : 01
Input End : 12
wget "http://portal/excel01.xls"
wget "http://portal/excel02.xls"
wget "http://portal/excel03.xls"
wget "http://portal/excel04.xls"
wget "http://portal/excel05.xls"
wget "http://portal/excel06.xls"
wget "http://portal/excel07.xls"
wget "http://portal/excel08.xls"
wget "http://portal/excel09.xls"
wget "http://portal/excel10.xls"
Press any key to continue . . .

但如果Input start = 01Input End = 08或 如果Input start = 01Input End = 09,则无法正常工作且excel文件未下载。结果:

Input start : 01
Input End : 08
Press any key to continue . . .

有人能解释一下吗?

2 个答案:

答案 0 :(得分:3)

前导零意味着数字被解释为八进制。 0-7没关系,但没有八进制8或9这样的数字。你已经用2个SET命令添加一个前导0,所以不要输入前导零。

答案 1 :(得分:2)

这是一种解决方法:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION    
set start=101
set end=199

for /l %%i IN (%start%,1,%end%) DO (
     set num=!num:~-2!
    echo wget "http://portal/excel!num!.xls"
)