質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

2回答

910閲覧

最後のsetdnsの部分が通りません

ebinohara

総合スコア0

DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2022/10/23 09:11

前提

DNS自動取得し、設定するバッチ作成中に
エラーが発生しました

実現したいこと

DNSアドレス情報を取得し、取得するインターフェイスをイーサネットに限定
DNSが設定されていない場合のみ、指定したDNSを設定する

発生している問題・エラーメッセージ

for /f "tokens=1,2* usebackq delims=^:" %%i in (`netsh interface ip show dnsservers ^| findstr "イーサネット 2"`) do @set INTERFACE1="イーサネット 2" for /f "tokens=1,2* delims=, usebackq" %%i in (`netsh interface ip show dnsservers ^| findstr "Loopback Pseudo-Interface 1"`) do @set INTERFACE2="Loopback Pseudo-Interface 1" rem イーサネットの場合のみDNSを取得するようにする if %INTERFACE1% == "イーサネット 2" ( goto SearchDNS ) else ( goto end ) :SearchDNS rem DNSアドレスの数字の部分だけを取得するために情報を取得後にtrimを実行 for /f "tokens=1,2* usebackq delims=^:" %%i in (`netsh interface ipv4 show dnsservers %INTERFACE1% ^| findstr "DNS サーバー"^| findstr /n /r "."`) do @set DNS=%%k echo %DNS% rem 取得したDNSアドレスの前後を削除 call :Trim %DNS% echo %DNS% rem DNSアドレスを取得後、DNSアドレスが設定されてないときのみsetdnsに行く if "%DNS%" == "" ( goto SetDNS ) else ( goto end ) rem DNSアドレスを設定するパート ここから下の部分がうまくいかない  **:SetDNS** rem DNSセットのコマンド set interface_name=イーサネット 2 rem インターフェイス名を設定 set interface_name=イーサネット 2 rem DNSサーバ情報を設定 set dns_server=xx.xx.xx.xx set dns_server=xx.xx.xx.xx netsh interface ipv4 set dns name="%interface_name%" source=static address="%dns_sever%" register=primary validate=yes netsh interface ipv4 set dns name="%interface_name%" address="%dns_server2%" pause :Trim set DNS=%* exit /b :end pause exit

'address' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

netsh interface ipv4 set dns name="イーサネット 2"

必要なパラメーターが指定されませんでした。
必要なパラメーターを確認し、再入力してください。
このコマンドの構文が無効です。ヘルプで正しい構文を参照してください。

上記のエラーメッセージが出てしまい、修正しても通りません
アドバイスをいただきたいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

下記は、途中で改行せずそれぞれ1行にする&address= → addr
ではありませんか?

netsh interface ipv4 set dns name="%interface_name%" source=static address="%dns_sever%" register=primary validate=yes  ↓ netsh interface ipv4 set dns name="%interface_name%" source=static addr="%dns_sever%" register=primary validate=yes netsh interface ipv4 set dns name="%interface_name%" address="%dns_server2%"  ↓ netsh interface ipv4 set dns name="%interface_name%" addr="%dns_server2%"

投稿2022/10/23 09:21

編集2022/10/23 09:23
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ebinohara

2022/10/23 09:23

変に改行していました。 もう一度試してみます。
guest

0

netshコマンドの途中で改行してしまっています。

投稿2022/10/23 09:18

otn

総合スコア84421

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ebinohara

2022/10/23 09:22

otnさんアドバイス何度もありがとうございます。 修正して試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問