【问题标题】:Printing array in batch file using variable index, having trouble with delayed expansion使用变量索引在批处理文件中打印数组,延迟扩展有问题
【发布时间】:2015-08-21 12:55:32
【问题描述】:

我正在尝试将一个字符串存储在一个数组中,然后使用变量作为索引来访问它们。 我试过延迟扩展,但我不知道代码有什么问题。 请帮忙。 test.cmd 文件包含

@echo OFF
@set i=1
echo ENTER Your First Name :
setlocal enableDelayedExpansion
set /p input_value[%i%]=%=%
call:print
endlocal
@set i=2
setlocal enableDelayedExpansion

echo ENTER Your Last Name :
set /p input_value[%i%]=%=%
call:print
endlocal
:print
@echo !input_value[%i%]!
GOTO:EOF

输出:

D:\backup_app\bat>test.cmd
ENTER Your First Name :
radhe
radhe
ENTER Your Last Name :
kishan
kishan
!input_value[2]!

输出中的最后一行是困扰我的地方。

【问题讨论】:

  • 你对!input_value[2]!有什么期望?尝试删除:print上方的endlocal,你会得到kishan
  • 我不想要!input_value[2]!在输出中。但我明白了。
  • 那你应该参考 JosefZ 的回答
  • :print 标签之前插入goto :EOFexit /B,因为您第三次无意中“陷入”:print 例程...

标签: arrays windows batch-file command


【解决方案1】:

您需要跳过:print 过程(您可以仅对必要的代码sn-p启用延迟扩展),如下所示:

@echo OFF
setlocal enableExtensions
@set i=1
echo ENTER Your First Name :
set /p input_value[%i%]=%=%
call:print
@set i=2

echo ENTER Your Last Name :
set /p input_value[%i%]=%=%
call:print
goto :next
:print
    setlocal enableDelayedExpansion
    echo !input_value[%i%]!
    endlocal
    GOTO:EOF
:next

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多