for循环中的Windows批处理逗号分隔列表

jle*_*and 2 for-loop batch-file delimiter

我知道有很多关于SO的相关问题,比如这一个或者这个问题,但由于某种原因我到目前为止无法获得任何工作.

我正在尝试创建一个批处理文件来连续安装几个软件:

这是我的批处理文件

set packages=(7zip.install, ^ :: for compression
notepadplusplus.install, ^ :: file editor
Firefox, ^
putty, ^
mysql -Version 5.5.30, ^
postgresql)

for %%i in %packages% do ( 
::echo %%i
cinst %%i
)
Run Code Online (Sandbox Code Playgroud)

一切正常,但对于mysql部分.这个空间实际上是一个分隔符,这意味着我得到了

E:\>(echo 7zip.install )
7zip.install

E:\>(echo notepadplusplus.install )
notepadplusplus.install

E:\>(echo Firefox )
Firefox

E:\>(echo putty )
putty

E:\>(echo mysql )
mysql

E:\>(echo -Version )
-Version

E:\>(echo 5.5.30 )
5.5.30

E:\>(echo postgresql )
postgresql
Run Code Online (Sandbox Code Playgroud)

我想最终得到的是

E:\>(echo mysql -Version 5.5.30 )
 mysql -Version 5.5.30
Run Code Online (Sandbox Code Playgroud)

诀窍在于我希望将我的列表放在脚本之上,每行一个元素,并且可以插入注释以清楚发生了什么.

有没有办法做到这一点?

我更习惯linux bash,我必须说我有点迷失了windows符号.

谢谢!

End*_*oro 10

试试这个:

@ECHO OFF &setlocal

for %%i in (
    "7zip.install"
    "notepadplusplus.install"
    "Firefox"
    "putty"
    "mysql -Version 5.5.30"
    "postgresql"
        ) do (
    echo %%i
    cinst "%%~i"
)
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用_percent comments_,如"7zip.install"%=一个注释%`.这有效地是未定义变量的可变扩展 (5认同)