• 締切済み

PC名によてIPアドレスを振り直す

複数台(100台以上)のPCがあります。 PC名は場所+タイプ+連番で管理されているのですが、IPアドレスは無秩序になっています。 PC名により、IPアドレスを設定し直すBatを作成して全PCのスタートアップに設定して再設定をしたいと思うのですが、Batの書き方がわかりません。(スタートアップにはLAN上の共有ファイルに保存されているBatのショートカットを設置する予定) 例えば、、、「PC名+IPアドレス」のテーブルを作れるとします。Bat内部でもファイルからの読み込みでもOKです。引数で渡すみたいな方法があるなら、それでもかまわないです。 その内容が、、、 ”PC_A01_001","10.10.100.101" "PC_A01_002","10.10.100.102" "PC_A01_003","10.10.100.103",,, Batでやりたいことは、 (1) 自分のPC名と合致するテーブルにセットされているIPアドレスが現在の設定と同じならばEXITする(既に設定処理されて2度目以降の起動となるための処理回避) (2) PC名に対応するIPアドレスを設定する、サブネット、デフォルト、優先DNS、代替DNSなどは固定番号をセットする (3) 再起動 (4) 再起動後は(1)でEXITし続けるはず こんなBatの書き方を教えて下さい。 コピペで使える程度の丁寧さでお願いします。 当方、BATは読めるし、ある程度の修正も出来ますが、新規で作成するスキルが低いです。 よろしくお願いします。 #Windows7 #network #IP #BAT

みんなの回答

回答No.3

>(1) 自分のPC名と合致するテーブルにセットされているIPアドレスが現在の設定と同じならばEXITする(既に設定処理されて2度目以降の起動となるための処理回避) 自分のホスト名、IPアドレスが何になっているか知るには、コマンドプロンプトで ipconfig /all を実行すれば、情報が表示されます。その情報から「ホスト名」と「IPv4アドレス」を知る事ができます。 >(2) PC名に対応するIPアドレスを設定する、サブネット、デフォルト、優先DNS、代替DNSなどは固定番号をセットする IPアドレス、サブネット、デフォルトゲートウェイ、DNSの設定は、コマンドプロンプトを「管理者として実行」して netsh interface ip set address "[インターフェイス名]" static [IPアドレス] [ネットマスク] [ゲートウェイ] netsh interface ip set dns "[インターフェイス名]" static [プライマリDNS] primary netsh interface ip add dns "[インターフェイス名]" [セコンダリDNS] の3行を実行すれば指定できます。例えば netsh interface ip set address "ローカル エリア接続" static 192.168.0.110 255.255.0.0 192.168.0.1 netsh interface ip set dns "ローカル エリア接続" static 192.168.0.1 primary netsh interface ip add dns "ローカル エリア接続" 127.0.0.1 のようにします。 なお[インターフェース名]は、LANアダプタやWi-Fi、その他のLAN機器など、複数の機器が搭載されたPCでは ローカル エリア接続 ローカル エリア接続 2 ローカル エリア接続 3 のように、インターフェースが複数存在するので「有線LANの機器が『ローカル エリア接続』とは限らない」ので、注意しないといけません。 例えば、とあるPCは ローカル エリア接続 ⇒ 有線LAN ローカル エリア接続 2 ⇒ Wi-Fi ローカル エリア接続 3 ⇒ 有線LANその2 になっていて、別のとあるPCは ローカル エリア接続 ⇒ Wi-Fi ローカル エリア接続 2 ⇒ 有線LAN になっている可能性があります。 どの「インターフェース名」が、どの機器に対応しているかは「そのPCの環境によって異なる」ので、一括してBATで処理するのは不可能です。 とあるPCでは「ローカル エリア接続 2」を指定しなければならず、別のとあるPCでは「ローカル エリア接続」を指定しなければならない、など「環境がそれぞれのPCで異なる」のです。この「環境の差異」は、BATでは解決しません。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは DHCPは使わないとするなら、iniファイルを用意して、(PCIP.iniとする) [Main] PC_A01_001="10.10.100.101" PC_A01_002="10.10.100.102" PC_A01_003="10.10.100.103" PC_A01_004="10.10.100.104" のようにテーブルを登録しておいて、別のバッチファイルで @echo off setlocal enabledelayedexpansion set INIFILE="PCIP.ini" call :GetIni Main %COMPUTERNAME% GET_VAL %INIFILE% if %GET_VAL%==ERR (   echo %COMPUTERNAME% ) else (   set IFNAME="ローカル エリア接続"   set IPADDR=%GET_VAL%   set MASK=xxx.xxx.xxx.xxx   set GW=xxx.xxx.xxx.xxx   set DNS1=xxx.xxx.xxx.xxx   set DNS2=xxx.xxx.xxx.xxx   netsh interface ipv4 set address name=%IFNAME% static %IPADDR% %MASK% %GW% 1   netsh interface ipv4 set dnsservers name=%IFNAME% static %DNS1% primary validate=no   netsh interface ipv4 add dnsservers name=%IFNAME% %DNS2% index=2 validate=no   ipconfig /all   shutdown -r -f ) goto :eof :GetIni set TempStr= set SN= for /f "usebackq eol=; delims== tokens=1,2" %%a in (%4) do (   set V=%%a&set P=!V:~0,1!!V:~-1,1!&set S=!V:~1,-1!   if "!P!"=="[]" set SN=!S!   if "!SN!"=="%~1" if "!V!"=="%~2" (     set TempStr=%%b     goto GetIni_EXIT   ) ) set TempStr=ERR :GetIni_EXIT set %3=%TempStr% :EOF として、固定番号は適宜修正して試して下さい。 色々なサイト参考にしてツギハギしたので、テストPCで慎重に試して下さい。

  • hiodraiu
  • ベストアンサー率15% (451/2846)
回答No.1

DHCPを考慮した上で質問されているのなら無視して下さい 世の中に既にある仕組みでDHCPというものが有ります。これはDHCPサーバーというものがあり、そのサーバーが各PCに対してIPアドレスを設定する仕組みです。IPアドレスを一箇所で管理できるので便利だと思いますし、ここで求められている要件を満たすものだと思います。 一度、検討されてみては如何でしょうか。