経緯
Windows の hosts ファイルに一行追記するだけの処理を自動化したかったので作ることにしました。
今回のケースでは
- 重複確認なし
- PowerShell が使用できない可能性あり
- hosts の中に日本語コメントが混じっている可能性があり、文字化けさせないように
という制約が存在しており、若干厄介な感じ。
対応
以上を踏まえて bat のみで対処することにしました。
@echo off
rem add linfefeed
echo;>> %SystemRoot%\System32\drivers\etc\hosts
rem append hosts
echo 192.2.0.1 HOSTNAME>> %SystemRoot%\System32\drivers\etc\hosts
rem output message
echo The addition to hosts has been completed.
rem confirm hosts
notepad c:\windows\system32\drivers\etc\hosts
日本語を混ぜると上手く走らなかったのでコメントはアルファベットオンリーで。
注意点としては、共有フォルダ等のネットワーク上ではなく、ローカル上で実行、かつ管理者権限として実行することが必要です。
ただし、 bat で対処したことがかえって功を奏したのかコメントが文字化けせずに済んだのでこれで済。
参考
- WindowsのHostsファイル書き換えバッチWindows7,10の… – Yahoo!知恵袋
- Host File(hosts)の編集
- コマンドプロンプト | リダイレクトでファイルへ出力するときに追加書き込みを行う
- バッチファイルで「@echo off」を使う
- pause(バッチファイルの処理を一時停止する)
別件: hosts と lmhosts
NetBIOS での名前解決は lmhosts でWindowsファイルサーバ系などが該当、一般的な名前解決は hosts という認識で良さそうです。