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

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

新規登録して質問してみよう
ただいま回答率
85.31%
コマンド

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

Q&A

1回答

2140閲覧

call trim処理がうまくできない

ebinohara

総合スコア0

コマンド

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

0グッド

0クリップ

投稿2022/10/21 04:42

編集2022/10/21 06:51

前提

ここに質問の内容を詳しく書いてください。
(例)
batでDNSを設定するものを作っています。

実現したいこと

DNSを取得して設定がなかったら新たに設定する
設定してあったらスキップ

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

取得したDNSアドレスの前後のスペースを削除したいのですが
call 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
、、、、、、、、、、、、、、、、、、、、、、、、
rem 取得したDNSアドレスの前後を削除

call :Trim %DNS%
指定されたバッチ ラベルが見つかりません - Trim →この部分です。なぜかtrimできないです。

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

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

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

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

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

guest

回答1

0

同じバッチファイルの中に、呼び出そうとした:Trimというラベルが無いと言うことです。
もしかして、別ファイルのTrim.batを呼び出したいなら、call :Trimじゃなくてcall Trimです。

投稿2022/10/21 05:03

otn

総合スコア86295

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

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

ebinohara

2022/10/21 05:08

回答ありがとうございます。 質問文の中にミスがあったので修正しました。(call trimの文) 取得したDNSを変数%DNS%に入れて、call trimを実行したいのですが 今回だと同じバッチファイル内にtrimはないということなのでしょうか ごめんなさい、あまり分かっていなくて、、
otn

2022/10/21 06:07

call :trim => 同じバッチファイル内の :trim というラベルの処理を呼び出す。 call trim => 別ファイルの trim.bat という名前のファイルの処理を呼び出す。 あなたが、やりたい方を選択。どちらが存在するのでしょうか?
otn

2022/10/21 06:08

あと、コード部分は、 ``` と ``` という行で上下に挟んでください。書いた通りに表示されていないことに気づいてない?
ebinohara

2022/10/21 06:54

私の質問が下手なのですべてのプログラムを載せました。足らない部分教えていただけると幸いです。 それでいうと前者です。同じバッチファイル内の処理を呼び出す感じです。 なんとなく理解はできているんですが、うまくできないんですよね、、 初めてプログラムを作るので上記のこと初めて知りました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問