我在尝试打印数组值时遇到了一些问题,如下所示:
@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的另一种方法可以正常工作。 我该如何改正? 是否可以将此数组值存储在任何其他变量中?如果是这样,怎么样?
答案 0 :(得分:0)
您正在尝试回显未设置的变量,因此它将为空白。
@Echo Off
SetLocal EnableDelayedExpansion
Set argc=0
For %%q In (%*) Do (
Set "args[!argc!]=%%q"
Rem The next line is for information only
Call Echo=%%args[!argc!]%%
Set/A argc+=1
)
Rem take a look at the variables
Set args[
Timeout -1
答案 1 :(得分:0)
假设argn
已被调用且set /a argn-=1
for /L %%q in (0,1,%argn%) do echo !args[%%q]!
set /a argn+=1
已设置为#args + 1,如评论中所述,
content.document
将是我的偏好。