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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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で使用可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

409閲覧

ifとtrimの部分でうまくいきません

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で使用可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/10/22 06:25

編集2022/10/22 06:55

前提

DNS情報を取得し、指定したDNSDアドレスを設定する

実現したいこと

Ethernetに限定しDNSを取得
数字の部分だけを取得、trim
設定がない(空)だったら設定、数字があったら設定しないのようにしたい。

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

rem 調べる範囲をイーサネットだけに限定する for /f "tokens=1,2* delims=, usebackq" %%i in (netsh interface ip show dnsservers ^| findstr "Ethernet0") do @set INTERFACE1="Ethernet0" 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" if %INTERFACE1% == "Ethernet0" ( goto SearchDNS ) else ( goto end ) :SearchDNS rem DNSが設定されてるか調べて、数字だけを抜き取る for /f "tokens=1,2* usebackq delims=^:" %%i in (netsh interface ipv4 show dnsservers %INTERFACE1% ^| findstr "DNS サーバー"^| findstr /n /r ".") do @set DNS=%%k rem 取得したDNSアドレスの前後を削除 call :Trim %DNS% echo %DNS% rem DNSセットのコマンド set interface_name=イーサネット rem インターフェイス名を設定 set jinterface_name=イーサネット rem DNSサーバ情報を設定 set dns_server=xx.xx.xx.xx set dns_server=xx.xx.xx.xx if "%DNS%" == "" ( goto SetDNS ) else ( goto end ) :SetDNS netsh interface ipv4 set dns name="%interface_name%" source=static address="%dns_sever%" register=primary validate=yes ntsh interface ipv4 set dns name="%interface_name%" address="%dns_server2%" :Trim set DNS=%* :end pause exit``` このままだとそもそもバッチが起動?開かれません。 見ていただきありがとうございます。

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

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

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

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

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

y_waiwai

2022/10/22 06:28

提示のコードではどういう動作となるんでしょうか。 問題が見えません
ebinohara

2022/10/22 06:57

そもそもエラーでバッチが開けません、 trimの部分がうまくできていません。
guest

回答1

0

そもそもエラーでバッチが開けません、

具体的な現象を書きましょう(目で見たままの描写)。

間違いとしては、
1.コピペミスなのかもしれませんが、forの括弧内のコマンドを実行する部分に、バッククォートが欠けています。
2.:Trimset DNS=%*の次に、exit /bが必要。
3.最後のnetshのタイプミス。

netshのサブコマンドの文法がそれでいいかは調べてませんが合ってそうですね。

投稿2022/10/22 10:12

otn

総合スコア84507

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

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

ebinohara

2022/10/23 03:14

丁寧にありがとうございます。 具体的な現象がわかり次第すぐ報告します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問