Добрый день, подскажите пожалуйста. Пытаюсь через bat файл реализовать на вид довольно простой функционал, но никак не могу разобраться с синтаксисом
for /L %%i in (0,1,2) do //Делаю цикл, который пройдется от 0 до 5 с шагом 1
(
for /f "UsebackQ skip=%%i" %%A IN ("000.txt") do (set "000=%%~A") //внутри этого цикла делаю другой цикл в котором смотрю в файл на строчку № %%i
)
Вот и не могу разобраться, где косяк, точнее как правильно расставить ковычки, чтобы параметр skip брался из переменной %%i
В результате вижу "Непредвиденное появление i%
Заранее спасибо
CMD/BAT - Цикл в цикле. Подставлять параметр skip
-
Foreigner
Re: CMD/BAT - Цикл в цикле. Подставлять параметр skip
splin0000, В скип нельзя подставить встроенную переменную цикла (%%i):
Код:
Код:
Код: Выделить всё
@echo off
setlocal
for /l %%i in (1,1,5) do call:for "%%i"
goto:eof
:for
set "skip=%~1"
for /f "skip=%skip%" %%i in (....-
Georgio
Re: CMD/BAT - Цикл в цикле. Подставлять параметр skip
Цитата Foreigner:
В скип нельзя подставить встроенную переменную цикла (%%i)
Можно, но сложно.
Вот так:
Код:
.
Или так:
Код:
.
Другое дело, что
1) "skip" не может быть равен нулю, и
2) Вам нужно присваивать переменной "000" значения, равные "%%~A"
(правда, не понимаю, для чего нужно это "переприсваивание").
Поэтому с учётом этих двух пунктов Ваш код будет выглядеть примерно так:
Код:
.
В скип нельзя подставить встроенную переменную цикла (%%i)
CMD/BAT - Цикл в цикле. Подставлять параметр skip
Можно, но сложно.
Вот так:
Код:
Код: Выделить всё
@echo off
for /l %%i in (1,1,5) do (
cmd/c "for /f "usebackq skip=%%i" %%A in ("000.txt") do @echo.%%~A"
echo.
)
)
pause>nul.
Или так:
Код:
Код: Выделить всё
@echo off
for /l %%i in (1,1,5) do (
for /f %%A in ('for /f "usebackq skip=%%i" %%j in ("000.txt"^) do @echo.%%j') do (
echo.%%~A
)
echo.
)
)
pause>nul.
Другое дело, что
1) "skip" не может быть равен нулю, и
2) Вам нужно присваивать переменной "000" значения, равные "%%~A"
(правда, не понимаю, для чего нужно это "переприсваивание").
Поэтому с учётом этих двух пунктов Ваш код будет выглядеть примерно так:
Код:
Код: Выделить всё
@echo off
for /l %%i in (0,1,5) do (
if %%i equ 0 (
for /f "usebackq" %%A in ("000.txt") do (
set 000=%%~A
cmd/v/c echo.!000!
)
) else (
for /f %%A in ('for /f "usebackq skip=%%i" %%j in ("000.txt"^) do @echo.%%j') do (
set 000=%%~A
cmd/v/c echo.!000!
)
)
echo.
)
pause>nul.