Ваш синтаксис команды выглядит правильно для меня. Я ожидаю, что эта строка командного файла, как есть, будет производить эти команды:
dir > 1.output
dir > 2.output
dir > 3.output
dir > 4.output
dir > 5.output
Что в свою очередь создаст 1.output
, 2.output
и т. Д.
В качестве подсказки отладки вы можете попробовать изменить эту строку на что-то вроде этого:
for %%a in (1 2 3 4 5) do echo dir ^> %%a.output
Обратите внимание на ^
, который используется для экранирования перенаправления >
.
Также:
- Не забудьте использовать
%%a
в пакетных файлах
но %a
в командной строке.
- Помните, что
for
переменные
с учетом регистра; %%A
отличается
от %%a
.
Обновление
Прошло много времени с тех пор, как я должен был получить пакетный файл, работающий под такой старой версией ОС, но я не удивлюсь, если перенаправление было несовместимо с for
в тот день.
Вы можете попробовать это:
for %%a in (1 2 3 4 5) do call helper.bat %%a
В helper.bat:
dir > %1.output
Или, если вам не нравится дополнительный пакетный файл, объедините их в один файл:
if .%1==.sub goto do_sub
for %%a in (1 2 3 4 5) do call %0 sub %%a
goto end
:sub
shift
dir > %1.output
:end