Пакет, как правильно завершить цикл

для тестирования мне нужен рекурсивный каталог с некоторыми файлами, который достигает максимальной длины пути.

Скрипт, используемый для создания, состоит только из двух циклов 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 он не работает, как указано выше.

В любом случае, благодарю Вас.

11.12.2008 12:06:05
Вы вызываете этот сценарий из другого сценария или копируете / вставляете этот код в другой сценарий? Можете ли вы предоставить более подробную информацию.
Patrick Cuff 11.12.2008 12:09:39
Из предоставленного вами вывода выглядит, как будто символ новой строки в вашем текстовом редакторе (между "@echo off" и "for / L ...") не верен. Что вы используете для редактирования командного файла?
Bernhard Hofmann 11.12.2008 12:10:18
Я использовал notepad ++ для редактирования файла. кажется странным, c & p к другому файлу работает, но только один раз, с новой оболочкой cmd, он снова выходит из строя.
Oliver Friedrich 14.12.2008 12:14:47
2 ОТВЕТА
РЕШЕНИЕ

Я не думаю, что вам нужны '@' перед паренами или '&&' внутри тела цикла 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
1
11.12.2008 12:18:05
«@» Не является обязательным, но если я удаляю «&&», оно тоже не работает.
Oliver Friedrich 11.12.2008 12:19:25
Хммм. что вы используете для редактирования сценария? Как отмечает в своем комментарии Бернхард, здесь есть что-то странное. Вам нужно только, чтобы '&&' всех команд находились в одной строке.
Patrick Cuff 11.12.2008 12:28:47

Я не понимаю, как добавить небольшой комментарий под ответом, поэтому я просто сделаю это здесь.

Знак @ перед открывающей скобкой необходим только в том случае, если эхо еще не отключено. В этом случае, что произойдет без знака @, это то, что каждая команда в цикле FOR будет отображаться.

И да, причина необходимости && заключается в том, что текстовый редактор помещает все это в одну строку. Но никто не отправил решение. Просто скопируйте и вставьте в Блокнот, а затем разделите строки по мере необходимости.

2
9.03.2012 14:21:12