ここから質問投稿すると、最大4000ポイント当たる!!!! >>

【環境】
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

以上です。

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【バッチファイル】ホスト名をファイル名につけたい【変更】

バッチファイルで作成したファイルのファイル名(○○.txt)を
「ホスト名.txt」に変更したいのですが
やり方がよくわかりません。
どなたかご存知の方、お教え願います。
宜しくお願いします。

Aベストアンサー

補足です。

ファイル名の変更例です。

rename C:\XXX.txt %COMPUTERNAME%.txt

QバッチファイルでPC情報を取得する

小規模な事務所ですが、遠隔地にあり詳しいユーザーもいないため、
PC情報の収集に支障をきたしています。

バッチファイルを実行してもらい、
情報を書き込んだテキストファイルを生成することができないかとの相談です。

必要な情報は:
・コンピュータ名
・ワークグループ名(ドメインではありません)
・IPアドレス
・デフォルトゲートウェイ
・MACアドレス
・OS
・PCメーカー、型番
・PC本体のシリアル
・Windows OSのシリアル
・Windowsの自動更新の設定がされているかどうか

バッチレベルでできるのかどうか……。
可能であればスクリプトもしくはリンクをご提示ください。

Aベストアンサー

とりあえず、バッチで簡単に取れるのは以下です。
>・コンピュータ名
>・ワークグループ名(ドメインではありません)
>・IPアドレス
>・デフォルトゲートウェイ
>・MACアドレス
>・OS
>・Windowsの自動更新の設定がされているかどうか

getpcinfo.bat
---------------------------ここから
set >C:\PC情報の収集.txt
ipconfig /all >>C:\PC情報の収集.txt
systeminfo>>C:\PC情報の収集.txt
---------------------------ここまで

但し、systeminfo はXP以降でないと無かったかも?
(未確認)

で、C:\PC情報の収集.txt をメールしてもらえばOK

>・PCメーカー、型番
>・PC本体のシリアル
>・Windows OSのシリアル

これは無理でしょう。

Qバッチでテキストファイルから任意の行のみ取得したい

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数Textに入れる(set Text=222)
4.変数Textを使用し色々処理をする
-----------------------------------------
コレを繰り返します。
2と4は同じ動作ですので、行数のカウンタを設定しループさせる予定です。
n行目を全て取り出す方法がわかれば行けると思うのですが、
どうも見つかりません。ご存知の方がいればお教え願いたいと思います。

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数T...続きを読む

Aベストアンサー

No3ですが、たぶん提示したスクリプトを見ると、ある事に気がつくはず?

findstr /n /r "." a.txt | findstr /r "^3:"

で3行目を表示してくれます。え!? それだけ。そうなんです

ただ、あと、先頭の”3:” をどうやって切り離すか? と言う問題にぶつかる。さらにファイルに先頭に”3:”があった場合、どうするのか? さらに、findstr の正規表現の動作が??? 表示すれるのはいいが、変数にどうやってセットするのか?

となる。結局 for 文を使いまわす事になります。

まあ、適当に改変して、上記の問題を解決してください。

QLAN経由で他のPCのMACアドレスを調べることは可能でしょうか?

職場に存在する多数のPCのMACアドレスを、調べる方法を探しています。それらPCの利用者の邪魔にならないように、LAN経由でMACアドレスを調べることができたらと考えています。どうか方法をご存知の方は教えてください。

Aベストアンサー

同一サブネット内でIPアドレスが既知ならば
コマンドプロンプトで
ping IPアドレス を実行後

arp -a を実行すれば IPアドレスとMACアドレスが表示されます
arp -a > IP.txt とすれば IP.txtに結果が保存されます

Qコマンドプロンプトを使ってipアドレスからコンピュータ名を知る方法

ipアドレスは分かっていますがコンピュータ名が分かりません。リモート接続ソフトなどは使えないので、それでコンピュータ名を調べることはできません。
コマンドプロンプトを使ってipアドレスからコンピュータ名を知る方法を教えてください!

Aベストアンサー

なんか回答がバラバラなので整理しましょう。
調査している自分自身が使用している端末は、Windows XPのPCであると仮定します。
また、調べるのは基本的に外部から名前解決可能な名前(No.2さんの言う"2"に相当する名前)とします。

パターン1:
対象のIPアドレスがWindows端末機で、自分が使用している端末と同じネットワークに属しているか同一のWINSサーバを参照しているとき……No.4さんの答えで検索できます。

nbtstat -A <IP Address>

パターン2:
ネットワーク管理者がDNSをきちんと管理しており、対象IPについても管理者の管理下にある場合……以下2つのいずれかの方法で検索できます。

  nslookup <IP address>

または

  nslookup -q=ptr <reverse ip>.in-addr.arpa.
  ex) 192.168.12.1 のIPを調べたい場合、以下のように入力する
  nslookup -q=ptr 1.12.168.192.in-addr.arpa.

  (DNSサーバで逆引きが設定されていないと、正しく検索できない場合があります)

パターン3:
上記以外の場合

外部から名前解決できないので、調べようがありません。または、調べてもそれが正しいホスト名である保証がありません。
そのIPの端末自体に設定されているホスト名を直接調べるしかありませんが、それには実際にそのIPの端末を操作して調べるしかありません。
つまり、No.2さんの回答となるのですが、
IPを使用しているのがWindows PCやUnixサーバなどである保証はないので、確認するコマンドはその端末の種類(OS)によって異なります。

なお、tracert (traceroute)を使用する、という回答がありますが、これはパターン1またはパターン2のいずれかまたは両方を満たしていないと表示されませんので、厳密には正しい答えとはいえません。
(たいていの場合、"tracert <IP address>" や "ping <IP address>"で用が足りてしまうことも多いので、必ずしも間違いではないのですが)

なんか回答がバラバラなので整理しましょう。
調査している自分自身が使用している端末は、Windows XPのPCであると仮定します。
また、調べるのは基本的に外部から名前解決可能な名前(No.2さんの言う"2"に相当する名前)とします。

パターン1:
対象のIPアドレスがWindows端末機で、自分が使用している端末と同じネットワークに属しているか同一のWINSサーバを参照しているとき……No.4さんの答えで検索できます。

nbtstat -A <IP Address>

パターン2:
ネットワーク管理者がDNSをきちんと管理して...続きを読む

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

Qtxtファイルから特定の文字列が書かれた行だけを取得や削除するソフト

txtファイルで
特定の文字列が書かれた行だけを
取得や削除するソフトや方法を探しています。
フリーで無いなら、シェアウェアなどになってもかまいません

例えば
(12)と書かれた文字列がある行だけを抜きだしたり
逆に(12)と書かれた文字列がある行だけを削除したり
したいです。

そのソフトの操作方法も教えてくださると助かります。

では、回答を心よりお待ちしております。

Aベストアンサー

NoEditor
http://www.vector.co.jp/soft/winnt/writing/se300436.html

というフリーのテキストエディタをインストールすると、YokkaGrepというソフトがセットでインストールされます。

検索ディレクトリ、検索文字列(正規表現も可)、ファイル名(ワイルドカードで複数のファイルの検索も可)などをセットして検索できます。

検索結果をテキストファイルやcsvファイルに出力することや、検索文字列を含む行を削除などの機能もあります。

grepで検索すると、他にも似たような機能のソフトがあると思いますが、NoEditor付属のYokkaGrepは、お勧めです。

QDOSコマンドを教えてください

DOS(batファイル)で、コンピュータ名とIPアドレスを取得して、csvに吐き出したいのですが、
IPアドレスの取得ってどうすれば良いのでしょうか?
ipconfigを使うとIP_Addressの次のsubnet_maskを取得しているように思えます。

今、私が作ってみたのは以下のコマンドです。

rem コンピュータ名取得
set my_computername=%computername%

rem IPアドレス取得
for /f "skip=7 tokens=15" %a in ('ipconfig') do set my_ipaddress="%a"

rem CSVファイル出力
echo %my_computername% , %my_ipaddress% >> sample_out.csv

また、そのアドレスにもダブルコーテーションが付加されています。取ることはできますか?

DOSコマンド自体、あまり知識がなく困っています。

方法がありましたら教えていただけませんか?

Aベストアンサー

こんにちは。

for /f "tokens=14 delims=: " %1 in ('ipconfig ^| find "IP Address"') do set my_ipaddress=%1

でどうでしょう?いけると思います。

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

Q「プログラムと機能」の一覧を取得したい

OSを再インストールしたいのですが
今、コンパネの「プログラムと機能」に入ってる一覧をどこかに書き出す方法はありますか?

インストールしているプログラム一覧のメモを取りたいのですが、
いい方法が思いつきません。

原始的ですが
スクショを撮ってパワポとかに貼り付けするしかないのかなー
なんて思ってます。

もっと効率のいい方法があれば教えてください。

Aベストアンサー

下記のレジストリのサブキーをsaveして(export)してリストで見るという方法もあります。
appwiz.cplを実行して表示されるuninstall可能なプログラムのすべてが取得できます。
ただしメモというよりも,内容が詳しすぎるかもしれません。
メリットは標準機能でsaveできることです。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall


人気Q&Aランキング