代码之家  ›  专栏  ›  技术社区  ›  Kevin Vaughan

批处理如何正确结束for循环

  •  4
  • Kevin Vaughan  · 技术社区  · 17 年前

    出于测试目的,我需要一个包含一些文件的递归目录,该目录达到最大路径长度。

    用于创建的脚本仅包含两个for循环,如下所示:

    for /L %%a in (1 1 255) do @(
        mkdir %%a
        && cd %%a
        && for /L %%b in (1 1 %random%) do @(
                echo %%b >> %%a.txt
            )
    )
    

    现在我想将这个脚本作为另一个脚本的一部分嵌入,因为还有更多的工作要做,但是我不能在它周围添加任何其他命令,否则它会拒绝工作。如果这对您有用,我会在windows vista下使用它。

    如果我写作,它也不起作用 "@ECHO OFF echo done “在最后一行。

    命令行上的输出为:

    X:\Scripte>recursive.cmd
    OFFfor /L %a in (1 1 255) do @( mkdir %a
    The system cannot find the path specified.
    

    第8层似乎有问题,问题似乎出在使用的命令shell中,如果使用的是裸露的cmd.exe,它就可以工作,而使用visual studio 2008命令shell它就不能工作,如上所述。

    无论如何,谢谢你。

    2 回复  |  直到 17 年前
        1
  •  2
  •   trlkly    14 年前

    我不明白如何在答案下面添加一点注释,所以我就在这里添加。

    仅当echo尚未关闭时,才需要右括号前面的@符号。在这种情况下,如果不使用@符号,则FOR循环中的每个命令都会得到响应。

        2
  •  1
  •   Patrick Cuff    17 年前

    我认为你不需要在父母或&&'在for循环体内部;paren负责处理for循环中的多个语句。

    @echo OFF
    
    for /L %%a in (1 1 255) do (
        @echo a = %%a
        mkdir %%a
        cd %%a
        for /L %%b in (1 1 %random%) do (
            echo %%b >> %%a.txt
        )
    )
    
    @echo done
    
    推荐文章