CSVに記述したホスト名とIPアドレスのリストからホスト名が一致する場合にIPアドレスを設定するバッチファイル!

050-VBA

へっぽこヘタレシステム管理者の管理人です。

仕事の関係でネットワークのセグメントが異なる環境をいったり来たりする端末が出てきたので・・・

なんとか簡単にIPアドレスを環境に合わせて設定できる方法がないかネットでイロイロ調べてバッチファイルを作る方法が分かったので忘備録として掲載しておきます。

まず、下図のようなリストを【CSV】で作成します。

名前はとりあえず【ip_list.csv】としておきましょう。

メモ帳で開くと下の様になります。

#PClist,,,,,,,
hostname,IPsettei,DNSsettei,IPaddress,GW,mask,DNS1,DNS2
hostname1,static,static,192.168.1.10,192.168.1.1,255.255.255.0,192.168.1.254,192.168.1.253
hostname2,static,static,192.168.11.10,192.168.11.1,255.255.255.0,192.168.11.254,192.168.11.253

リストの内容ですが・・・

  • 1:ホスト名
  • 2:IPアドレスの設定が静的かどうか
  • 3:DNSの設定が静的かどうか
  • 4:IPアドレス
  • 5:GW
  • 6:サブネットマスク
  • 7:DNS1
  • 8:DNS2

という内容です。

次にバッチファイルを作成します。

バッチファイルの内容は次のとおりです。

@echo off

echo ************************************************
echo リストからホスト名に一致するIPアドレスを設定します
echo ************************************************

pause

echo ***********************
echo IPアドレスのリストを取得
echo ***********************


rem リストファイル(CSV)のパスを指定する
SET FILE_LIST=d:\ip_settei\ip_list.csv
SET FLG=0


rem リストを読み込み
rem ホスト名があった場合の処理
for /F "delims=(,) tokens=1-8" %%a in (%FILE_LIST%) do (
  if %COMPUTERNAME%==%%a (
    SET PCname=%%a
    SET IPset=%%b
    SET DNSset=%%c
    SET IP=%%d
    SET GW=%%e
    SET MASK=%%f
    SET DNS1=%%g
    SET DNS2=%%h
    SET FLG=1
  )
)

pause

echo *******************
echo ホスト名の存在確認
echo *******************
if %FLG% == 0 (
	echo **********************************
	echo  ホスト名がリストにありませんでした
	echo **********************************
	goto err
)


pause

echo ****************
echo IPアドレスの設定
echo ****************

if %IPset% == static (
	netsh interface ipv4 set add name="イーサネット" source=static addr=%IP% mask=%MASK% gateway=%GW%
) else if %IPset% == dhcp (
	netsh interface ipv4 set add name="イーサネット" source=dhcp
) else (
	echo staticかdhcpを選択して下さい
	goto err
)


pasuse

echo ************
echo DNSのの設定
echo ************

if %DNSset% == static (
	netsh interface ipv4 set dns name="イーサネット" source=static addr=%DNS1% register=primary
	netsh interface ipv4 add dns name="イーサネット" addr=%DNS2%
) else if %DNSset% == dhcp (
	netsh interface ipv4 set dns name="イーサネット" source=dhcp
) else (
	echo staticかdhcpを選択して下さい
	goto err
)


:err
pause
exit
スポンサーリンク

このままコピペして拡張子を【bat】にすればOKです。

ブログランキングにご協力ください!
ブログランキング・にほんブログ村へ

リストのファイル名と絶対パスだけは合わせてください。

一つの処理毎に【pause】を入れることにより途中で止まった場合は、どこがおかしいか確認できます。

最終的に問題なく動けは【pause】は消しても問題ありません。

ブログ開設に必要なドメイン取得、サーバーレンタル、ASPの登録等は、こちらのサイトから!

コメント

タイトルとURLをコピーしました