打印并将数组值分配给批处理文件中的另一个变量

时间:2016-11-21 10:22:21

标签: windows batch-file scripting

我在尝试打印数组值时遇到了一些问题,如下所示:

@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的另一种方法可以正常工作。 我该如何改正? 是否可以将此数组值存储在任何其他变量中?如果是这样,怎么样?

2 个答案:

答案 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

将是我的偏好。