2008-12-11 82 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循環中的每個命令都會被回顯。

而且,是的,需要& &的原因是文本編輯器將它全部放在一行上。但沒有人發佈解決方案。只需複製並粘貼到記事本中,然後根據需要分開行。