Windowsバッチファイルで楽をする:hostsファイルを書き換える(切り替えるまたは差し替える)バッチ

Windows
記事内に広告が含まれています。

windowsのhostsとは?

Windowsのhostsファイルは、インターネットドメイン名をIPアドレスにマッピングするために使用されるシステムファイルです。
このファイルを編集することで、特定のドメイン名を特定のIPアドレスに強制的に関連付けたり、アクセスをブロックしたりすることができます。
これは、ネットワークテストやウェブサイトのブロック、あるいは開発中のウェブサイトへのアクセスを容易にするためによく利用されます。

hostsファイルの編集は、開発者やシステム管理者にとって非常に便利な機能を提供しますが、初心者にとっては少し複雑に感じるかもしれません。

hostファイルの場所

Windowsのhostsファイルは通常、C:\Windows\System32\drivers\etc\ディレクトリにあります。
ファイル名はhostsで拡張子はありません。

hostsファイルの書式

hostsファイルの基本的な書式は非常にシンプルです。
各エントリは、IPアドレスとホスト名またはドメイン名をスペースまたはタブで区切って記述します。
例えば、ローカルホストのデフォルトエントリは以下のようになります:

127.0.0.1       localhost

もし、特定のドメインを特定のIPアドレスにマッピングしたい場合は、次のように追記します:

192.168.1.10    example.com

各エントリの後ろにコメント、注記を入れることもできます。
hostsファイルにもサンプルがある下記の#の後ろはコメント、注記です。

102.54.94.97     rhino.acme.com          # source server
38.25.63.10     x.acme.com              # x client host

日本語のコメントでも大丈夫です。

192.168.1.10    example.com          # テストWebサーバ

コメントアウトしたい場合は、行の先頭に#を追加してコメントアウトします。

# 以下はコメントアウトしています
#192.168.1.10    example.com

hostsファイルを書き換える(切り替える)必要性があるパターン

hostsファイルを書き換える必要がある一般的なシナリオは以下の通りです:

  • ローカルネットワーク内で特定のウェブサイトをブロックする場合
  • 開発中のウェブサイトを実際のドメイン名でテストする場合
  • DNSが更新されるのを待つことなく、ドメイン名を新しいIPアドレスに即時にマッピングする場合

hostsファイルを書き換える(切り替える)バッチ

hostsファイルを書き換えるためのバッチファイルは、以下のステップで作成できます:

  1. 新しいhostsファイルを準備します。
  2. 以下のコマンドを含むバッチファイル(例:switch_hosts.bat)を作成します:
@echo off
copy /y C:\path\to\new\hosts C:\Windows\System32\drivers\etc\hosts
  1. バッチファイルを管理者として実行します。

hostsファイルを接続するネットワーク環境に合わせて書き換える(切り替える)バッチ

家用とオフィス用のhostsファイルをDHCPで付与されるIPアドレス帯によって切り替えるバッチのサンプルを見てみましょう。

ネットワーク環境に応じてhostsファイルを自動的に切り替えるには、DHCPサーバーから割り当てられるIPアドレス帯を検出し、それに基づいて適切なhostsファイルを選択するスクリプトが必要です。
以下は、そのためのバッチファイルの具体例です。

@echo off
setlocal enabledelayedexpansion

:: IPアドレス帯を検出
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /C:"IPv4 Address"') do (
    set ipaddr=%%a
    set ipaddr=!ipaddr:~1!
)

:: 家用IPアドレス帯(例:192.168.1.xxx)
set home_ip=192.168.1.

:: オフィス用IPアドレス帯(例:10.0.0.xxx)
set office_ip=10.0.0.

:: IPアドレス帯に基づいてhostsファイルを切り替え
if "!ipaddr:~0,10!"=="%home_ip%" (
    copy /y C:\path\to\home\hosts C:\Windows\System32\drivers\etc\hosts
) else if "!ipaddr:~0,7!"=="%office_ip%" (
    copy /y C:\path\to\office\hosts C:\Windows\System32\drivers\etc\hosts
)

endlocal

このバッチファイルは、まず現在のIPアドレスを取得し、設定された家用またはオフィス用のIPアドレス帯と比較します。
一致する場合、対応するhostsファイルをシステムのhostsファイルとしてコピーします。
このスクリプトをローカルグループポリシーのスタートアップスクリプトに登録するか、
タスクスケジューラーの起動時、ログオン時のタイミングで管理者ユーザーで実行するように登録するか、
手動で管理者として実行することで、ネットワーク環境が変わるたびにhostsファイルを適切に切り替えることができます。

変更の反映

hostsファイルを編集した後、変更を有効にするためには、システムを再起動するか、コマンドプロンプトでipconfig /flushdnsを実行してDNSリゾルバキャッシュをクリアする必要があります。

hostsファイルを書き換える(切り替える)ときの注意点

  • 常に元のhostsファイルのバックアップを取っておくこと。
  • バッチファイルを実行する前に、現在のネットワーク環境を確認すること。
  • バッチファイルは管理者権限で実行する必要があります。
  • ネットワークの設定やセキュリティポリシーによっては、この方法が適用できない場合もあるため、事前に確認しておくことをお勧めします。

まとめ

hostsファイルを書き換えるバッチファイルは、ネットワーク設定のカスタマイズに非常に便利です。
ただし、正しい手順を踏み、注意点を守ることが重要です。
この記事がバッチファイル作成の入門として役立つことを願っています。安全なネットワーク管理を!

免責規定

この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。
OSのバージョンやリリースによっては、記載されているコマンドが実行できない、または異なる結果をもたらす可能性があります。
また、会社内のパソコンなど、ポリシーや権限によっては実行できない場合があります。
実行には管理者権限が必要な場合が多いため、注意が必要です。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。

最後までお読みいただきありがとうございました。
またお会いしましょう!

コメント

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