Никогда не любил Goto, Bat файл | Крымский форум

Никогда не любил Goto, Bat файл

  • Добро пожаловать на форум! Рады видеть вас здесь! Зарегистрируйтесь или Войдите в аккаунт, чтобы иметь полный доступ к площадке!

Rumata

Местный житель
Легенда
Сообщения
1,048
Реакции
80
Репутация
102
сетевая у меня не без приколов, при каждом ребуте подтыкает DHCP, что мне иногда нафиг не нужно

собственно BAT файл на коленке (два перехода, нормальное состояние и работа с LIB доменами)

Код

@echo off
set /p Network="Select settings (1 - normal, 2 - lib): "
echo Select - %Network%

if %Network% equ 2 goto lib

:normal
netsh interface ip set address "dekker_home" static 192.168.124.153 255.255.255.0 192.168.124.100
netsh interface ipv4 set dnsserver "dekker_home" static none
netsh interface ipv4 add dns "dekker_home" 192.168.124.100 1

:lib
netsh interface ip set address "dekker_home" static 192.168.124.153 255.255.255.0 192.168.124.100
netsh interface ipv4 set dnsserver "dekker_home" static none
netsh interface ipv4 add dns "dekker_home" 51.254.25.115 1

echo Network IP change:
ipconfig /all
echo _____
pause


вопрос в студию, не работает оператор безусловного перехода GOTO, постоянно исполняется вторая метка, в данном случае :lib
 
Цитата(Rumata @ 7 Июля, 2018, 2:00)
вопрос в студию, не работает оператор безусловного перехода GOTO

ложное утверждение


Цитата(Rumata @ 7 Июля, 2018, 2:00)
постоянно исполняется вторая метка, в данном случае :lib

см. выше




вот рабочий шаблон

Код

@echo off
set /p Network="Select settings (1 - normal, 2 - lib): "
echo Select - %Network%

if %Network% equ 2 goto lib
:normal
echo normal
goto end

:lib
echo lib

:end

echo Network IP change:
echo 'ipconfig /all'
echo _____
pause



переход на метку ещё не означает выход из оной
метка это просто метка

В Вашем случае при выборе "1" - сначала выполнялось normal, а за ней - lib
как написано так и работало.
 
тенкс, работает
smoke.gif
 
эммм ... все работало, нынче

Цитата
Синтаксическая ошибка в имени файла, имени папки или метке тома.


Код
@echo off
set /p Network="Select settings (1 - normal, 2 - lib): "
echo Select - %Network%

if %Network% equ 2 goto lib

:normal
netsh interface ip set address "dekker_home" static 192.168.124.153 255.255.255.0 192.168.124.100
netsh interface ipv4 set dnsserver "dekker_home" static none
netsh interface ipv4 add dns "dekker_home" 192.168.124.100 1
goto end

:lib
netsh interface ip set address "dekker_home" static 192.168.124.130 255.255.255.0 192.168.124.100
netsh interface ipv4 set dnsserver "dekker_home" static none
netsh interface ipv4 add dns "dekker_home" 195.10.195.195 1

:end

echo Network IP change:
ipconfig /all
echo _____
pause
 
"if %Network% equ 2 goto lib"
попробуй заменить на
"if %Network% == 2 goto lib"
но незнаю. Странный скрипт.
у SET нет ключей. Садишь ты на %Network% строку а не цифру, у IF нет параметра equ, но у меня он именно на IF матюкается.
 
странный, но работал ))

дело в том что даже в командной строке, если брать построчно, например

netsh interface ipv4 set dnsserver "dekker_home" static none

тоже матерится - Синтаксическая ошибка в имени файла, имени папки или метке тома.

т.е. он ругается на все три строчки

Код
netsh interface ip set address "dekker_home" static 192.168.124.130 255.255.255.0 192.168.124.100
netsh interface ipv4 set dnsserver "dekker_home" static none
netsh interface ipv4 add dns "dekker_home" 195.10.195.195 1
 
ок. а что такое netsh? в BAT такой команды нету, т. е. по логике - вызов внешней утилиты с аргументами. Она есть в системе?
Если нет - то да - ошибка в имени файла - интерпретатор не находит чего от него запускать хотят.

Кстати, оффтопом, интереса ради а заради вот такое передёргивание DNS? Чего пытаемся достичь?
 
Цитата(User80218 @ 10 Августа, 2022, 17:43)
Кстати, оффтопом, интереса ради а заради вот такое передёргивание DNS? Чего пытаемся достичь?

зону LIB доменов, без вендовой многоходовки по смене DNS

netsh

https://docs.microsoft.com/ru-ru/windows-se.../netsh-contexts
 
Цитата(User80218 @ 9 Августа, 2022, 19:49)
транный, но работал ))

дело в том что даже в командной строке, если брать построчно, например

netsh interface ipv4 set dnsserver "dekker_home" static none



1. сначала нужно определиться с именем интерфейса, который собираететсь мучать
netsh interface ip show config

2. потом подправить батник и заменить "dekker_home" на вменяемый(обнаруженные выше)
3. профит.(static пропущено намеренно, чтоб не провоцировать ИБ)

[attachmentid=269586]
 

Вложения

  • _________________2022_08_11_10_41_15.png
    _________________2022_08_11_10_41_15.png
    96.9 KB · Просмотры: 0
вот странно, почему раньше все работАло почти 4 года
 
Цитата(Rumata @ 11 Августа, 2022, 11:17)
вот странно, почему раньше все работАло почти 4 года


алиас на интерфейсе был, потом:
сменил провайдера/перенастроил сеть/переобозвал впн/переобозвал адаптер/заменил сетевуху

всё, что угодно могло произойти

идея проста - netsh не может работать с воздухом и привешивать(менять) айпишники к чему угодно, ей обязательно нужно указывать существующий(!!!) интерфейс.
нет интерфейса - нет результата
 
Назад
Сверху