powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Обрыв цикла for - BAT
5 сообщений из 5, страница 1 из 1
Обрыв цикла for - BAT
    #39015095
Volik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В моем примере я в цикле 10 раз запрашиваю у пользователя ввод параметра.
Если параметр введен неверно, то запрашиваю его на текущей итерации снова и снова, используя при этом метку.
Проблема в том, что переход к метке обрывает цикл, т.е. если ввести сразу неверный параметр, а потом - верный (0, 1 или 2), то цикл заканчивается.
Можно как-то избежать этого?

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
echo off
cls
SETLOCAL ENABLEDELAYEDEXPANSION
  
FOR /L %%i IN (0,1,10) DO (
 
  :NEEDCOPY
  set /P isCopy="Need copy? (0-no, 1-yes, 2-break): "
  if not "!isCopy!" == "0" (
    if not "!isCopy!" == "1" (
      if not "!isCopy!" == "2" (
        goto NEEDCOPY
      )
    )
  )
)
 
pause
...
Рейтинг: 0 / 0
Обрыв цикла for - BAT
    #39015208
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volik,

А так?

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
echo off
cls
SETLOCAL ENABLEDELAYEDEXPANSION
  
FOR /L %%i IN (0,1,10) DO (
 
  :NEEDCOPY
  set /P isCopy="Need copy? (0-no, 1-yes, 2-break): "

  set p=0;
  if "!isCopy!" == "0" set p=1
  if "!isCopy!" == "1" set p=1
  if "!isCopy!" == "2" set p=1  

  if not "!p!" == "1" goto NEEDCOPY
) 
pause
...
Рейтинг: 0 / 0
Обрыв цикла for - BAT
    #39015261
Volik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обрывается.
Еще если в вашем примере ввести, например, 1, затем 2, затем снова 1, то тоже обрывается.
...
Рейтинг: 0 / 0
Обрыв цикла for - BAT
    #39015568
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Volik,

Можно так попробовать (разбить цикл и собсно ввод):

1.cmd:
~~~~~~~~~~~~~
Код: powershell
1.
2.
3.
4.
5.
6.
echo off
cls
SETLOCAL ENABLEDELAYEDEXPANSION
  
FOR /L %%i IN (0,1,10) DO (call 2.cmd %%i)
pause


2.cmd
~~~~~~~~~~~~~
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
echo %1
:NEEDCOPY
  set /P isCopy="Need copy? (0-no, 1-yes, 2-break): "
  set p=0;
  if "!isCopy!" == "0" set p=1
  if "!isCopy!" == "1" set p=1
  if "!isCopy!" == "2" set p=1  
  if not "!p!" == "1" goto NEEDCOPY
exit /b
...
Рейтинг: 0 / 0
Обрыв цикла for - BAT
    #39015944
Volik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, вариант рабочий.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Обрыв цикла for - BAT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]