代码之家  ›  专栏  ›  技术社区  ›  David

循环遍历windows命令行bat文件中的字符串值

  •  37
  • David  · 技术社区  · 14 年前

    我正在尝试为我的Windows机器创建一个批处理脚本,该脚本在(字符串/十进制)值列表中循环,并将每个值用作循环中的参数。

    FOR ? in ('1.1','1.2','2.4','3.9') do echo V[value_from_for_loop].txt
    

    我在如何循环遍历每个项并在echo语句中使用变量方面遇到了问题。

    5 回复  |  直到 5 年前
        1
  •  70
  •   Joey    14 年前
    for %x in (1.1 1.2 2.4 3.9) do echo V%x.txt
    

    要在批处理文件中使用,必须将 % :

    for %%x in (1.1 1.2 2.4 3.9) do echo V%%x.txt
    
        2
  •  35
  •   user257319 user257319    11 年前

    @他的答案很好,

    @echo off
    for %%x in (
            a.js
            storage.js
            logic.js
            main.js
            z.js
           ) do (
             echo your file name is %%x
             echo "%%x" is a cool name
             echo.
             echo =-=-=-=-=-=
             echo.
           )
    

    它看起来像一个垂直列表的原因是这样可以更容易地添加或删除更多的项目(“echo”和“dot”表示一条空行)。

    输出如下所示:

    C:\example>yourBatchName.cmd
    your file name is a.js
    "a.js" is a cool name
    
    =-=-=-=-=-=
    
    your file name is storage.js
    "storage.js" is a cool name
    
    =-=-=-=-=-=
    
    your file name is logic.js
    "logic.js" is a cool name
    
    =-=-=-=-=-=
    
    your file name is main.js
    "main.js" is a cool name
    
    =-=-=-=-=-=
    
    your file name is z.js
    "z.js" is a cool name
    
    =-=-=-=-=-=
    

    **注意:对于文件名列表,您应该更喜欢使用以下内容:

    for %%e in (*.dll) do (....

        3
  •  15
  •   Kurt Pfeifle    12 年前

    假设您有一个很长的值列表,在命令行中键入这些值会非常不舒服。另外,DOS命令行还有一个长度限制。

    my-values.list ,内容类似于:

    1.1
    1.2
    2.4
    3.9
    3.9.1
    3.9.2
    3.91
    3.91.1
    ...
    

    现在您可以从这个文本文件中逐行读取变量:

    for /f "tokens=*" %a in (c:\path\to\my-values.list) do echo.  Version%~nxa.txt
    
        4
  •  2
  •   mwpowellhtx    5 年前

    for %x in (1.1 1.2 2.4 3.9) do (
        echo V%x.txt
    )
    
        5
  •  1
  •   סטנלי גרונן Abhishek Singh    5 年前

    它不会让我评论,但我想增加我的2美分的价值在这里。 “do”必须与“for”命令的右括号位于同一行。换句话说,这将起作用:

    for %x in (1.1 1.2 2.4 3.9) do echo V%x.txt
    

    …但这不会:

    for %x in (1.1 1.2 2.4 3.9)
        do echo V%x.txt