前回ブログサーバーにアクセスするとき、自宅LAN内か外にいるかでhostsを書き換えることでブログを見ることができるという記事を書いたが、あまりにも面倒くさい。
自宅デスクなら持ち運ぶこともないので、一回hostsを書き換えれば良い話だが、ノートPCだとそうもいかない。家にいるときにはhostsにサーバーのローカルIPを書いて、外にいるときにはその行をコメントアウトしなければならない。。。
ブログは思い立った時にすぐ書きたい!
と言っても最近はあまり書けていないんですが、ネタはあるんだけどね。。。
ってことでhostsを自動的に書き換えるバッチファイルを作成することにした。
調べてみるとWindows8にはPowershellっていうシェル(?)があってせっかくだし、PowerShellで書こうと思ったけどPowerShellのファイルを作って実際に実行しようとクリックしてみるも、PowerShellが実行されずメモ帳で開かれる。。。なぜだ。。。
調べてみると
Windows PowerShell スクリプトを実行する
うーん、セキュリティポリシーを変更したあとにパスも変えなければならないのか、、、普通にバッチファイル作ったほうが早そう。。。
ってことでバッチファイルを作りました。初めて作ったからよくわからんけど一応できてるからおk。
以下バッチファイルソース
cd C:WindowsSystem32Driversetc
Netsh wlan show interfaces > tmp
find "4CE6763E57E4" tmp > NUL
if errorlevel 1 (echo #192.168.10.1 kotashin.dontexist.com > hosts) else (echo 192.168.10.1 kotashin.dontexist.com > hosts)
del tmp
exit
簡単に説明すると1行目でhostsファイルのあるフォルダに移動して、
2行目で現在アクティブになっているネットワークをtmpファイルにリダイレクトする。
3行目で自宅のSSIDと一致したらNULにエラーを入れる(ここが少しややこしい、自宅にいたらNULにそのままSSIDを書き込んでエラー結果と見せかけている)。
4行目でNULに何かが書き込まれていた時にhostsに#192.168.10.1 kotashin.dontexist.comを書き込み、そうでない場合、192.168.10.1 kotashin.dontexist.comを書き込む。
最後にtmpファイルを削除して終わり。
tmpファイルを作ってHDDガリガリやってダメなプログラムな気もするけど、何回変数に入れてやろうとしても出来なかったから仕方がない。動いてるからおk。
で、このプログラムをブラウザ起動に同時起動させることにした。そのためにまたバッチファイルを作成した。
start "" "C:WindowsSystem32Driversetchost.bat"
start "" "C:Program Files (x86)GoogleChromeApplicationchrome.exe"
でこのバッチファイルのショートカットをデスクトップに作成してアイコンをクロームにすれば完璧。
ブラウザ起動時に自動的にhostsを書き換えて自分のこのブログにアクセスできるようになった。めでたしめでたし。
と思ったら、なんか変なエラーが出てる。
![]()
ありゃりゃ。スリープ入れれば治りそうな気もするけどちゃんどコマンドを通ってるし、まぁいいか。