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

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

Ответить
Настройки темы
CMD/BAT - [решено] Переход не на ту метку в пакетном файле

Пользователь


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

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


Здравствуйте. В зависимости от имени введенной переменной в пакетном файле, необходимо, чтобы интерпретатор переходил на ту или иную метку.
Но почему-то не переходит.
Помогите пожалуйста разобраться

Код: Выделить весь код
echo vvedi skip, esli ne nuzhno menyat ip ili go, esli nuzhno
set /p NextStep=

if "%NextStep%" neq "go" call :skip		
call :go

:go
chcp 1251
ipconfig
netsh interface show interface
set /p "interface="
set /p "ipstatic="
set /p "mask="
set /p "gateway="
set /p "dns="
call "1.5 ChangeIPMaual2" %interface% %ipstatic%
netsh interface ip set address name="%interface%" static %ipstatic% %mask% %gateway%
netsh interface ip set dns "%interface%" static %dns%
netsh interface ip add dns "%interface%" 0.0.0.0
echo ESLI NAZHMESH KNOPKU IP AUTO BUDET POLUCHEN
pause
netsh interface ip set address "%interface%" dhcp
netsh interface ipv4 set dns name="%interface%" dhcp
ncpa.cpl
pause
exit /b


:skip
echo konec
exit /b
вне зависимости от значения переменной NextStep переходит на метку :go

Отправлено: 12:48, 08-10-2021

 

Забанен


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

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


Код: Выделить весь код
echo vvedi skip, esli ne nuzhno menyat ip ili go, esli nuzhno
set /p NextStep=

if %NextStep%==go goto :go
goto :skip
exit

:go
chcp 1251
echo GOOOOOooooooooooooooo
pause
exit /b

:skip
echo Выход 
pause
exit
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:14, 08-10-2021 | #2



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

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


Забанен


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

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


А лучше choice заюзать ...↓
Код: Выделить весь код
@echo off
chcp 65001
 	echo ^--------------------------------------------------------
        echo ^    g - Изменить IP
        echo ^    Q - Выход
	echo ^---------------- timeout 30s exit ----------------------
CHOICE /C GQ /D Q /T 30

if /i %ERRORLEVEL% GEQ 3 (goto :EOF) else (goto :choice%ERRORLEVEL%)
:choice1
goto :go
pause & exit
:choice2
goto :skip
exit


:go
........................................

Последний раз редактировалось wasp14, 08-10-2021 в 13:38.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:31, 08-10-2021 | #3


Ветеран


Contributor


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

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


Цитата epoddubniy:
Но почему-то не переходит. >
Что написали, то и получили. Включите формализм:
if "%NextStep%" neq "go" call :skip
Если условие выполняетя, вызываем процедуру "skip", она выполняется, затем управление передаётся на следующую строку кода за этим If. (Вы использовали Call а не GoTo. Читайте Call /?)
Если условие не выполняется, делаем следующую строку кoда:
call :go
Процедура выполнится, и опять, возврат на следующую строку кода:
:go
и далее по тексту кода.
Повторно выполнится кусок кода от :go до exit.
как минимум, перед :go надо Exit
Можно нарисовать вот так:
Код: Выделить весь код
@Echo Off
cls
	echo vvedi skip, esli ne nuzhno menyat ip ili go, esli nuzhno
	set /p NextStep=

	if /I "%NextStep%" neq "go" (call :skip) else (call :go)
Exit /B
Но смысла набирать именно "skip" никакого: это значение нигде не контролируется.
Код: Выделить весь код
@Echo Off
cls
	echo vvedi go, esli nuzhno  menyat ip
	set /p NextStep=

	if /I "%NextStep%"=="go" (call :go) else (Echo konec)
Exit /B
А по минимуму изменить Ваш код:
Код: Выделить весь код
@Echo Off
cls
	echo vvedi skip, esli ne nuzhno menyat ip ili go, esli nuzhno
	set /p NextStep=

	if "%NextStep%" neq "go" GoTo :skip		
:go
.........................
.........................

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 08-10-2021 в 15:24.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:55, 08-10-2021 | #4



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] переход на метку VBS ymo_4@vk Скриптовые языки администрирования Windows 3 29-11-2017 16:02
[решено] Как можно отредактировать вот ту всю информацию в файле? micro8 Хочу все знать 2 02-05-2016 18:58
CMD/BAT - Закрытие окна или процесса в пакетном файле Спаситель Скриптовые языки администрирования Windows 0 01-09-2015 09:12
CMD/BAT - [решено] Копирование в метку содержимого файла на сервере без скачивания idlazarev_alex@vk Скриптовые языки администрирования Windows 4 19-04-2014 17:59
CMD/BAT - [решено] как отличить в пакетном файле XP от 2003 akrav Скриптовые языки администрирования Windows 4 14-01-2008 13:46




 
Переход