/ l循环无法运行

时间:2015-08-12 20:48:31

标签: batch-file for-loop cmd

我创建了一个循环来将十进制数转换为二进制数:

SET /P InputNum="Input Number: "

for /l %%x in (1, 1, 5) do (
    SET /A Output=%InputNum% %% 2
    SET BinaryArray[%%x]=%Output%
    SET /A InputNum /= 2
)

ECHO Binary Result: 
%BinaryArray[1]%%BinaryArray[2]%%BinaryArray[3]%%BinaryArray[4]%%BinaryArray[5]%
PAUSE 

这不行。 'Output'没有被赋值,这意味着数组没有被填充,甚至'InputNum / = 2'由于某种原因也不起作用。输出'InputNum / = 2'似乎根本不起作用。

我以非形式工作:

SETLOCAL
SET /P InputNum="Input Number: "
SET /A Output1=%InputNum% %% 2
ECHO Bit 1: %Output1%

SET /A InputNum /= 2
SET /A Output2=%InputNum% %% 2
ECHO Bit 2: %Output2%

SET /A InputNum /= 2
SET /A Output3=%InputNum% %% 2
ECHO Bit 3: %Output3%

SET /A InputNum /= 2
SET /A Output4=%InputNum% %% 2
ECHO Bit 4: %Output4%

SET /A InputNum /= 2
SET /A Output5=%InputNum% %% 2
ECHO Bit 5: %Output5%

ECHO Binary Result:  %Output1%%Output2%%Output3%%Output4%%Output5%
ENDLOCAL
PAUSE 

但我不能为我的生活让它更接近功能更优雅的循环。我错过了一些我不理解的语法吗?

1 个答案:

答案 0 :(得分:1)

您需要delayed expansion

setlocal enableDelayedExpansion
SET /P InputNum="Input Number: "

for /l %%x in (1, 1, 5) do (
    SET /A Output=!InputNum! %% 2
    SET BinaryArray[%%x]=!Output!
    SET /A InputNum /= 2
)

ECHO Binary Result: 
%BinaryArray[1]%%BinaryArray[2]%%BinaryArray[3]%%BinaryArray[4]%%BinaryArray[5]%
PAUSE