2008-12-11 579 views
4

出于测试目的,我需要一个带有一些文件的递归目录,即最大路径长度。批处理如何正确结束for循环

用于创建脚本只包括两个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命令外壳它不起作用,如上所述。

无论如何,谢谢。

+0

你是从另一个脚本调用这个脚本,还是在另一个脚本中复制/粘贴这段代码?你能否提供更多的细节。 – 2008-12-11 12:09:39

+0

从你提供的输出看来,就好像文本编辑器中的换行符(在“@echo off”和“for/L ...”之间)是不正确的。你用什么来编辑批处理文件? – 2008-12-11 12:10:18

回答

1

我不认为你需要'@'在parens前面或'for循环体内的'& &'; parens负责处理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 
2

我不知道如何添加一个答案下面一点评论,所以我就做在这里。

只有在回声尚未关闭的情况下,才需要在左圆括号前的@符号。在这种情况下,没有@符号会发生什么情况是FOR循环中的每个命令都会被回显。

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