dポイントプレゼントキャンペーン実施中!

【環境】
Windows7 professional 32bit sp1

お世話になります。

上記環境でバッチファイルを起動し、
1.MACアドレスを取得
2.複数NICがある場合は全てのMACアドレスを取得

という処理を行いたいのですが、
echoで取得結果を確認すると値が入っていません。
バッチに関して理解不足で申し訳ありませんが、是非ご教授お願い致します。

以下、現在作成しているコマンドです。
for /f "tokens=11 delims=: " %%b in ('ipconfig /all ^| find "Physical Address"') do set MAC=%%b

以上です。

A 回答 (4件)

いろいろ確認する方法はあると思いますが。


とりあえずfindを使わずにipconfigの出力全部にfor文を適用して、MACアドレスの行から思い通りの部分が取り出せているか確かめるとか。

そもそも、delimsにスペースを含めなければ、"tokens=2 delims=:"で単純に取り出せるんですけど。
MACアドレスの先頭にスペースが付いちゃいますが、それは後から消すほうが楽だし。

あと、前の締め切られた質問の方でも書きましたが、

set MAC=%%b

だと最後に実行した行しか有効にならないので、

SETLOCAL ENABLEDELAYEDEXPANSION

で環境変数の遅延展開を有効にしたうえで

set MAC=!MAC! %%b

として追加するようにしてみましょう。

この回答への補足

上手くいきました!!ありがとうございます。

加えて、
もし可能であれば、
”2.複数NICがある場合は全てのMACアドレスを取得”で取得した値で
ファイル内のテキストを検索することは可能でしょうか?

端末によってNICがいくつあるか不明なので、
取得したMACアドレス分検索し、検索結果によって処理を分岐させたいのですが・・・。

お手数おかけしますが、
何卒ご教授のほど、よろしくお願い致します。

補足日時:2012/02/27 17:52
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
早速試してみます。

お礼日時:2012/02/17 09:16

まずはfor文のtokensが何を意味するのか調べてみましょう。


そのうえで、11が正しい数値か考えてみましょう。

この回答への補足

回答ありがとうございます。

申し訳ありません。
13が正解ですね。

ただ、tokens=13で処理を実行して、
Echoで内容確認しようとすると、"ECHOは<ON>です。"と表示されていしまい。

値が取れていないのか、それともそもそものロジックがまずいのか、
頭が痛いところです。

補足日時:2012/02/16 15:43
    • good
    • 0
この回答へのお礼

お礼が遅れ申し訳ありません。
当方の知識不足にも関わらず、ヒントをくださり感謝しています。
今後ともよろしくお願いします。

お礼日時:2012/02/17 09:15

日本語版なら、「Physical Address」でなく「物理アドレス」の間違いではありませんか?

この回答への補足

言葉が足りず申し訳ありません。
おっしゃるとおり、「物理アドレス」である場合を考慮し、
「Physical Address」でも「物理アドレス」でも取得出来るよう、
分岐させてあります。

ただ、「物理アドレス」を指定したロジックを通った場合でも取得出来ていない状態なんです。

補足日時:2012/02/16 14:14
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
知識が無く、要点を欠いた質問にも関わらず回答頂き、
感謝しています。
今後ともよろしくお願い致します。

お礼日時:2012/02/17 10:53

直接的な回答ではありませんけど (^^ゞ


getmac
というコマンドもお試しを。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

getmac早速試して、MACアドレスの取得が確認出来ました。
あとはNIC・・・。今後はもっと勉強しないと駄目ですね。

お礼日時:2012/02/16 14:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!