Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Цикл в цикле. Подставлять параметр skip

Ответить
Настройки темы
CMD/BAT - Цикл в цикле. Подставлять параметр skip

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день, подскажите пожалуйста. Пытаюсь через 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%

Заранее спасибо

Отправлено: 12:28, 05-06-2015

 

Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


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 (....

Отправлено: 17:03, 05-06-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
В скип нельзя подставить встроенную переменную цикла (%%i) »


Можно, но сложно.


Вот так:

Код: Выделить весь код
@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
.

Отправлено: 21:07, 05-06-2015 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Цикл в цикле. Подставлять параметр skip

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Вложенный цикл в цикле etherlord Скриптовые языки администрирования Windows 4 27-04-2023 06:03
CMD/BAT - Цикл в Цикле deamon7 Скриптовые языки администрирования Windows 5 15-04-2023 09:04
CMD/BAT - Работа с переменными в цикле DarkDream604 Скриптовые языки администрирования Windows 5 03-03-2015 16:19
запуск GUICtrlSetData в цикле bugmenotagain AutoIt 10 04-08-2012 16:30
[решено] подставлять значения в зависимости от открытой страницы PhP binders Вебмастеру 11 05-10-2009 00:53




 
Переход