使用变量索引在批处理文件中打印数组,延迟扩展有问题
Printing array in batch file using variable index, having trouble with delayed expansion
我所尝试的只是将一个字符串存储在一个数组中,然后使用变量作为索引来访问它们。
我试过延迟扩展,但我不知道代码有什么问题。
请帮忙。
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]!
输出的最后一行让我很困扰。
您需要跳过 :print
过程(您可以只对必要的代码片段启用延迟扩展),如下所示:
@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
我所尝试的只是将一个字符串存储在一个数组中,然后使用变量作为索引来访问它们。 我试过延迟扩展,但我不知道代码有什么问题。 请帮忙。 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]!
输出的最后一行让我很困扰。
您需要跳过 :print
过程(您可以只对必要的代码片段启用延迟扩展),如下所示:
@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