@echo off
setlocal
set "list=a b c d"
(
for %%i in (%list%) do (
echo(%%i
echo(
)
)>file.txt
你不需要-实际上,不能在批处理中“声明”变量。给变量赋值会创建它,而赋值一个空字符串会删除它。任何没有赋值的变量名都有一个空字符串的值。所有变量都是字符串-无一例外。有一些操作看起来像是执行(整数)数学函数,但它们的操作是从字符串来回转换的。 Batch对变量名中的空格很敏感,所以你的赋值会将字符串"A B C D"(包括引号)赋值给变量"list "(不包括引号,但包括空格)。语法set "var=string"用于将值string赋值给var,而set var=string将做同样的事情。几乎。在第一种情况下,结束引号后的任何尾随空格都将从赋值中排除,第二个是包含。2打印时,空格有点难以看到。 ECHO回显字符串。典型地,它后跟一个空格-批处理使用的默认分隔符之一(其他的是TAB、COMMA、分号--任何一个都可以,但是标签经常被文本编辑器转换成空格序列,其他的也在这些年里发展出了自己的怪癖。)ECHO中O后面的其他字符被发现可以精确地执行文档中的SPACE应该执行的操作。DOT很常见。开括号(可能是最有用的,因为命令
@echo off
set array=
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set nl=^&echo(
set array=auto blue ^!nl!^
bycicle green ^!nl!^
buggy red
echo convert the String in indexed arrays
set /a index=0
for /F "tokens=1,2,3*" %%a in ( 'echo(!array!' ) do (
echo(vehicle[!index!]=%%a color[!index!]=%%b
set vehicle[!index!]=%%a
set color[!index!]=%%b
set /a index=!index!+1
)
echo use the arrays
echo(%vehicle[1]% %color[1]%
echo oder
set index=1
echo(!vehicle[%index%]! !color[%index%]!
7条答案
按热度按时间pcrecxhr1#
是的,你可以使用两种方式。如果你只是想把元素分开,并在单独的行中显示它们,列表更简单:
用空格分隔的值列表可以通过
for
命令轻松处理:你也可以这样创建一个数组:
并以这种方式显示数组元素:
有关批处理文件中阵列管理的详细信息,请参阅:cmd.exe(批处理)脚本中的数组、链表和其他数据结构
注意!您必须知道
set
命令中包含的所有字符都插入到变量名(等号左侧)或变量值中。例如,此命令:创建一个名为
list
(list-space)的变量,其值为"A B C D"
(space,quote,A,etc)。因此,最好不要在set
命令中插入空格。如果需要将值括在引号中,则必须将变量名和值都括起来:PS -你不应该使用
ECHO.
来留下空行!一个替代方案是ECHO/
。关于这一点的更多细节,请参阅:http://www.dostips.com/forum/viewtopic.php?f=3&t=774gt0wga4j2#
有时候数组元素可能很长,这时你可以这样创建一个数组:
然后显示它:
r55awzrz3#
你不需要-实际上,不能在批处理中“声明”变量。给变量赋值会创建它,而赋值一个空字符串会删除它。任何没有赋值的变量名都有一个空字符串的值。所有变量都是字符串-无一例外。有一些操作看起来像是执行(整数)数学函数,但它们的操作是从字符串来回转换的。
Batch对变量名中的空格很敏感,所以你的赋值会将字符串
"A B C D"
(包括引号)赋值给变量"list "
(不包括引号,但包括空格)。语法set "var=string"
用于将值string
赋值给var
,而set var=string
将做同样的事情。几乎。在第一种情况下,结束引号后的任何尾随空格都将从赋值中排除,第二个是包含。2打印时,空格有点难以看到。ECHO
回显字符串。典型地,它后跟一个空格-批处理使用的默认分隔符之一(其他的是TAB、COMMA、分号--任何一个都可以,但是标签经常被文本编辑器转换成空格序列,其他的也在这些年里发展出了自己的怪癖。)ECHO
中O
后面的其他字符被发现可以精确地执行文档中的SPACE应该执行的操作。DOT很常见。开括号(
可能是最有用的,因为命令将生成
ECHO
状态(ECHO is on/off
)的报告,而将生成一个空行。
ECHO(
的问题是结果“看起来”不平衡。6qfn3psc4#
数组类型不存在
在批处理文件中没有“数组”类型,这有时是一个优点,有时也是一个缺点,但有一些变通方法。
这里有一个链接,提供了一些为自己创建类似于批处理中的数组的系统的建议:http://hypftier.de/en/batch-tricks-arrays。
echo variable >> filepath
用于将变量的内容回显到文件,echo.
(句点不是打字错误)用于回显换行符。我认为这两个人应该一起工作来完成你所需要的。
延伸阅读
d6kp6zgx5#
我喜欢这样:
5rgfhyps6#
设置环境
创建列表
从列表中选择
显示列表中的项目
要求用户选择(列表中的键)并返回相应的项
显示列表。括号中的幻数为:
0
数组的起始索引。1
步骤。4
最后一项。%%i
是您的索引。bqf10yzr7#