4

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

用于创建的 Script 仅包含两个 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 层的问题,问题似乎出在使用的命令外壳中,如果使用裸 cmd.exe,它可以工作,使用 Visual Studio 2008 命令外壳它不起作用,如上所述。

无论如何,谢谢。

4

2 回答 2

2

我不明白如何在答案下方添加一点评论,所以我就在这里做。

仅当 echo 尚未关闭时,才需要左括号前面的 @ 符号。在这种情况下,如果没有 @ 符号,将会回显 FOR 循环中的每个命令。

而且,是的,需要 && 的原因是文本编辑器将它们全部放在一行上。但是没有人发布解决方案。只需复制并粘贴到记事本中,然后根据需要分隔行。

于 2012-03-09T14:21:12.560 回答
1

我认为您不需要括号前面的“@”或 for 循环体内的“&&”;括号负责处理 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
于 2008-12-11T12:11:45.887 回答