【发布时间】:2016-11-21 10:22:20
【问题描述】:
我在尝试打印数组值时遇到一些问题,如下所示:
@echo off
setlocal EnableDelayedExpansion
set args=
set /A argc=0
SET /A argn=0
for %%a in (%*) do (
SET args[!argn!]=%%a
SET /A argn+=1
)
FOR %%q in (%*) DO (
echo !args[%argc%]! //not able to print the value
call echo %%args[!argc!]%% // this worked
if "%%q" == "--snap" (
set /A argc+=1
set SNAP=!args[%argc%]! //this didn't work
)
if "%%q" == "--source" (
set /A argc+=1
call SET "SOURCE=%%args[!argc!]%%" //this didn't work too
)
set /A argc+=1
)
使用这段代码只打印数组的第一个值,但使用 for /l 的另一种方法可以正常工作。 我该如何纠正? 是否可以将此数组值存储在任何其他变量中?如果是这样,怎么做?
【问题讨论】:
-
for %%q in (%*) do ...你的批处理文件从命令行获取了多少参数? BTWset /a argc+=1是首选语法 -
来自命令行的 13 个参数。 @elzooilogico
-
数组是如何填充的?我不知道它是如何填充的?
-
您必须使用
call echo %%args[!argc!]%%或for %%a in (!argc!) do echo !args[%%a]! -
数组填充为: set /a argn=0 for %%a in (/*) do ( set args[!argn!]=%%a set argn=!argn!+1 )
标签: windows batch-file scripting