将数组或列表传递给.bat文件以进行连接

时间:2015-12-15 08:34:27

标签: arrays batch-file cmd

我正在尝试将数组传递给conca。 bat 文件,以便我可以连接列表或数组所具有的所有字符串。 我已经能够连接,但是如果我手动放置数组,但是当我从命令行传递ii时我无法做到这一点......

有效:

FOR %%i IN (12346,49874,48954) DO call :concat %%i
set var=%var%%1;

不起作用

FOR %%i IN %1 DO call :concat %%i
set var=%var%%1;

我必须从命令提示符处遵循什么结构?

conca.bat "12346,49874"

conca.bat {12346,49874}

1 个答案:

答案 0 :(得分:1)

CMD中没有真正的列表或数组。但是,如果我正确地理解了您的问题,那么您正尝试这样做:

concat.bat 123 456 789

并希望输出为123456789。如果是这种情况,SHIFT是您正在寻找的神奇命令。这应该这样做:

@ECHO OFF
SET concatString=
:LOOP
IF [%1]==[] GOTO ENDLOOP
SET concatString=%concatString%%1
SHIFT
GOTO LOOP
:ENDLOOP
ECHO %concatString%
PAUSE

当您通过命令行将参数传递给bat文件时,可以通过%1%2%3访问它们等等。这意味着concat.bat a b c %1 { {1}}是a,%2是b,%3是c。唯一的问题是我们可能不知道会有多少参数,并且您希望脚本只使用一个参数以及100个参数。此时SHIFT正在节省一天。

SHIFT做了一件简单的事。它将参数的索引向右移动,因此" old" %1消失,%2变为%1%3变为%2,依此类推。我们继续循环,直到最后传递的参数变为%1。在另一次转换之后,没有值可以分配给%1,因此[%1]==[]变为true,我们跳出循环。