Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/27: Рейтинг темы: голосов - 27, средняя оценка - 4.89
SrgKord
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 655
1

Задать DNS-серверы в Windows XP/7

23.04.2014, 13:38. Просмотров 5036. Ответов 14
Метки нет (Все метки)

Читал инструкции к утилите netsh, нашел такую последовательность контекстов и команду, которые работают, если писать руками в консоль:
Bash
1
netsh interface ipv4 set dnsservers name="Подключение по локальной сети" static 8.8.8.8 primary
Но, если я эту команду пишу в батник, то результатом запуска становится переход к netsh> а дальше тишина. Т.е. последовательного перехода к остальным контекстам не происходит. Хотя читал темы тут, и люди примерно такой же код выкладывают. Так что не знаю, где моя ошибка, даже.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 13:38
Ответы с готовыми решениями:

Сравнение DNS сервера MS Windows DNS и BIND
Доброго времени суток. Прошу помощи в выборе правильных критериев в сравнении ПО. Сравниваются DNS...

Задать DNS-суффикс подключения через CMD
Здравствуйте! Пишу bat-файл для автоматической настройки сетевого подключения. Столкнулся с...

Как в одном домене задать разные DNS-серверы?
Подскажите пожалуйста, как решить эту задачку: - есть домен (Win Srv 2008r2), в нем, грубо говоря,...

DNS-серверы
Здравствуйте. Подскажите как программно вытащить адреса DNS-серверов? Какие есть варианты? Есть...

CPT: DNS серверы
Всем доброго времени суток. Кто может, помогите мне, пожалуйста, с работой в программе Cisco Packet...

14
Charles Kludge
Клюг
7653 / 3168 / 383
Регистрация: 03.05.2011
Сообщений: 8,381
23.04.2014, 14:20 2
Лучший ответ Сообщение было отмечено Dragokas как решение

Решение

The syntax on this page is based on Windows 2008, for backwards compatibility with XP dns is an alias for dnsserver, ip is an alias for ipv4
Т.е. dnsserver и ipv4 в хрюше не работают, вместо них пользуют dns и ip .
Здесь всё расписано внизу страницы.
И да, Netsh interface ip show dns вполне работает из батника, наверное, забыта пустая(ВК/ПС) строка в хвосте файла.
2
SrgKord
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 655
23.04.2014, 14:30  [ТС] 3
Переправил, заработало. Правда, ругается на кириллицу.
netsh interface ip set dns name="Подключение по локальной сети" static 8.8.8.8 primary
pause
0
Charles Kludge
Клюг
7653 / 3168 / 383
Регистрация: 03.05.2011
Сообщений: 8,381
23.04.2014, 14:42 4
Цитата Сообщение от SrgKord Посмотреть сообщение
Правда, ругается на кириллицу.
Вполне возможно из-за того, что батник сохранен не в той кодовой странице...И кто мешает туда вписать "Google Public DNS"?

Не по теме:

P.S. На руссифицированные системы забил со времён Доси 4.01, о чём ни разу не жалею.

0
23.04.2014, 14:42
SrgKord
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 655
23.04.2014, 19:58  [ТС] 5
Charles Kludge,
Ну мне приходится на работе иметь дело с компами, а там уж все поголовно русифицированы.
И гугловский днс я написал здесь для примера. Так-то я хочу, что б батник задавал наши корпоративные сервера.
Кстати, подскажите, как запустить батник или только netsh с правами админа, что б работало с флехи на любом компе, и без вопросов лишних?
0
Dragokas
Эксперт WindowsАвтор FAQ
17103 / 7158 / 861
Регистрация: 25.12.2011
Сообщений: 10,954
Записей в блоге: 16
23.04.2014, 23:02 6
SrgKord, оберните в JScript-вставку: http://www.cyberforum.ru/post3934558.html
1
SrgKord
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 655
28.04.2014, 21:39  [ТС] 7
С русски языком разобрался, скрипт работает. Правда касается это только первого днс адреса. Я интуитивно написал secondary в регистр, думал, должно получиться, оказалось нет - не все так просто. Нашел в сети копипасты одной инструкции, как добавить второй днс. Все сводится к фокусу, когда один адрес подменяет собою другой в таблице, и там что-то надо сделать, в общем переводить надо это все. Может кто-нибудь сказать русским языком, как это сделать можно?
0
Dragokas
Эксперт WindowsАвтор FAQ
17103 / 7158 / 861
Регистрация: 25.12.2011
Сообщений: 10,954
Записей в блоге: 16
28.04.2014, 21:43 8
Bash
1
netsh interface ip add dns "Подключение по локальной сети" 8.8.4.4
0
SrgKord
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 655
01.05.2014, 10:04  [ТС] 9
Сделал таким образом с кодировкой OEM 866, все работает:
Bash
1
2
3
netsh interface ip delete dns name="Подключение по локальной сети" addr=ALL
netsh interface ip add dns name="Подключение по локальной сети" addr=172.28.22.83
netsh interface ip add dns name="Подключение по локальной сети" addr=172.28.84.10 index=2
В некоторых источниках предлагается основной ДНС задавать командой set, но и с командой add исправно работает. Однако, интересно, какая практическая разница между этими командами, т.е. будет ли отличие в работе скрипта, при использовании этих команд?
1
Dragokas
Эксперт WindowsАвтор FAQ
17103 / 7158 / 861
Регистрация: 25.12.2011
Сообщений: 10,954
Записей в блоге: 16
01.05.2014, 20:38 10
add добавляет дополнительный DNS, если уже есть основной, или добавляет основной, если его нет.
set устанавливает только основной.
0
SrgKord
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 655
01.05.2014, 20:44  [ТС] 11
Dragokas,
Значит в данном примере, учитывая, что ДНСки предварительно удаляются, нет ни какой разницы, чем пользоваться add или set.
0
loban_ser
100 / 58 / 15
Регистрация: 29.01.2014
Сообщений: 113
11.05.2014, 19:26 12
А вот может кто-нибудь подсказать, почему в Windows7 ни команда
Bash
1
netsh interface ipv4 show interface |findstr /c:"connected"
ни
Bash
1
netsh interface ipv4 show interface |find "connected"
не работают?
0
Eva Rosalene
Ladybug
4129 / 1602 / 305
Регистрация: 06.01.2013
Сообщений: 4,194
Завершенные тесты: 2
11.05.2014, 21:10 13
Как это не работают? Работают!
0
Миниатюры
Задать DNS-серверы в Windows XP/7  
loban_ser
100 / 58 / 15
Регистрация: 29.01.2014
Сообщений: 113
11.05.2014, 21:23 14

и в 7-ке, у меня, аналогично.
0
Миниатюры
Задать DNS-серверы в Windows XP/7  
loban_ser
100 / 58 / 15
Регистрация: 29.01.2014
Сообщений: 113
11.05.2014, 21:29 15
Попробовал:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
@Echo off
(
echo Google=8.8.8.8
echo Google2=8.8.4.4
echo Yandex=77.88.8.8
echo Yandex2=77.88.8.1
)>%temp%\DNS.ini
call :read_settings %temp%\DNS.ini || exit /b 1
 
reg.exe query "HKU\S-1-5-19">nul 2>&1
if %errorlevel% equ 1 goto UACPrompt
 
Title Add DNS-Server
Color 17 
 
:Menu
cls
echo.
echo ----------------------------
echo Google DNS - (1)
echo ----------------------------
echo.
echo ----------------------------
echo Yandex DNS - (2)
echo ----------------------------
echo.
echo ----------------------------
echo Delete All DNS - (3)
echo ----------------------------
echo.
echo ----------------------------
echo Exit - (4)
echo ----------------------------
echo.
set /p userinp=">set option :" 
set userinp=%userinp:~0,1%
if /i "%userinp%"=="1" set dns1=%Google%&set dns2=%Google2%&set DNS=Google Public DNS&& goto adddns
if /i "%userinp%"=="2" set dns1=%Yandex%&set dns2=%Yandex2%&set DNS=Yandex Public DNS&& goto adddns
if /i "%userinp%"=="3" goto deldns
if /i "%userinp%"=="4" if exist %SETTINGSFILE% del %SETTINGSFILE%&Exit /b
 
:adddns
cls 
for /f "skip=3 tokens=5*" %%i in ('"netsh interface ipv4 show interface |findstr /v "disconnected""') do (
set "name=%%i %%j"
SetLocal EnableDelayedExpansion
Netsh interface ipv4 delete dns name="!name!" addr=ALL 2>nul 1>&2
Netsh interface ipv4 add dns name="!name!" addr=%dns1%
Netsh interface ipv4 add dns name="!name!" addr=%dns2% index=2
echo Successfully added DNS to "!name!" - "%DNS%" %dns1%;%dns2%
Endlocal
)
echo.
echo Press any key to Menu...
Pause >NUL
goto Menu
 
:deldns
cls
for /f "skip=3 tokens=5*" %%i in ('"netsh interface ipv4 show interface |findstr /v "disconnected""') do (
set "name=%%i %%j"
SetLocal EnableDelayedExpansion
Netsh interface ipv4 delete dns name="!name!" addr=ALL 2>nul 1>&2 && echo Successfully deleted DNS to "!name!"
Endlocal
)
echo.
echo Press any key to Menu...
Pause >NUL
goto Menu
 
:read_settings
set SETTINGSFILE=%1
if not exist %SETTINGSFILE% (
echo FAIL: Файл с настройками отсутствует
exit /b 1
)
for /f "tokens=1,2 delims==" %%i in (%SETTINGSFILE%) do (
set %%i=%%j
)
exit /b 0
 
:UACPrompt
mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "", "", "runas", 1) & Close()"
exit /b
3
11.05.2014, 21:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2014, 21:29

Нагрузка на DNS сервер. DNS на Windows Server. Мощности оборудования для больших DNS серверов
Приветствую коллеги! Интересно ваше узнать ваше мнение (а может быть у вас есть практика) какие...

Возможно ли репликация с DNS Windows на DNS Ubuntu?
Ситуация такая, сейчас построена локальная сеть фирмы на Windows, в по выкинули кучу денег. Стоит 1...

Задать ардеса DNS серверов
gethostbyname gethostbyname2 gethostbyaddr и т.д. используют определенный DNS сервер, адрес...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.