会社と家でネットワークの設定を切り替えたりしたい時。IPアドレス等の設定って面倒ですよね。わざわざネットワークの設定画面開くのとか。
会社でノートパソコン使ってる人なんかは、家と会社で設定が違うので大変です。今までは、拾ってきたバッチを使ってたんですが、懐かしくってちょっとバッチプログラミングしてみましたので晒してみます。
下の方に一部解説とか、小技載せてみましたw
結構おもしろかった(笑)こんどWindows DOS/コマンドプロンプト辞典でも読みなおして遊んでみようかな~w
今まで使ってたやつ。
これらを家で会社でコマンドランチャからピコってやってます。
@Rem IPON.bat @Rem 会社用 netsh interface ip set address "ローカル エリア接続" static 192.168.1.215 255.255.255.0 192.168.1.254 none netsh interface ip set dns "ローカル エリア接続" static 192.168.1.254 |
@Rem IPOFF.bat @Rem 家 netsh interface ip set address "ローカル エリア接続" dhcp netsh interface ip set dns "ローカル エリア接続" dhcp |
で、別に上記のものでよかったのですが、というより、上記のものの方が良かったかもしれませんが、ONとOFFを一緒くたにしたのを作ってみました。結構楽しかったw
(コピーすれば使えますが、DEFAULTラベルのところの値はお使いの環境用に書き換えて下さい。)
@Echo Off Echo --------------------------------------------------- Echo --- Change Network Config --- Echo --- 2009/02/26 valvallow --- Echo --------------------------------------------------- :TOP Echo. Set AREA="ローカル エリア接続" Set line=--------------------------------------------------- IPConfig | Find ". : " Echo. :Menu Echo %line% Set /p m="* Select memu 0:? / 1:on / 2:off / 3:end * " If %m%==0 (GoTo HELP) If %m%==1 (GoTo IP_ON_CONFIG) If %m%==2 (GoTo EXEC_OFF) If %m%==3 (GoTo END) ELSE (GoTo END) :IP_ON_CONFIG Echo %line% Set /p m="* 0:input / 1:default * " If %m%==0 (GoTo INPUT) If %m%==1 (GoTo DEFAULT) ELSE (GoTo END) :DEFAULT Set IP=192.168.1.215 Set SubNetMask=255.255.255.0 Set DefaultGateway=192.168.1.254 Set DNS=192.168.1.254 GoTo EXEC_ON :INPUT Echo %line% Set /p IP="IP Address = " Set /p SubNetMask="Sub Net Mask = " Set /p DefaultGateway="Default Gateway =" Set /p DNS="DNS = " GoTo EXEC_ON :EXEC_ON Echo %line% Echo AREA=%AREA% Echo IP=%IP% Echo SubNetMask=%SubNetMask% Echo DefaultGateway=%DefaultGateway% Echo DNS=%DNS% Echo %line% Echo now setting.... Netsh Interface IP Set Address %AREA% static %IP% %SubNetMask% %DefaultGateway% none Netsh Interface IP Set DNS %AREA% static %DNS% Echo %line% IPConfig | Find ". : " GoTo END :EXEC_OFF Echo %line% Echo AREA=%AREA% Echo IP="" Echo SubNetMask="" Echo DefaultGateway="" Echo DNS="" Echo %line% Echo now setting.... Netsh Interface IP Set Address %AREA% dhcp Netsh Interface IP Set DNS %AREA% dhcp Echo %line% IPConfig | Find ". : " GoTo END :HELP Echo %line% Echo "Help" Echo 0:? Call Help Echo 1:on Network Configs ON (Input or Default Values) Echo 2:off Network Configs OFF (To Empty) Echo 3:end Exit this bat GoTo Menu :END Echo %line% Set /p continue="* Exit or Continue? e/c * " If %continue%==c (GoTo Menu) Set AREA="" Set IP="" Set SubNetMask="" Set DefaultGateway="" Set DNS="" Set continue="" Set line="" Set m="" :EOF |
少しだけかいつまんで解説でも。
Setで変数に値をセット。 |
Set hoge="hoge" Set moge=1 |
変数を使用する際は%で囲む。 |
Echo %hoge% |
実行するとコンソールにhogeってでます。 |
コメント |
Rem コメント |
出力 |
Rem コンソールに出力 Echo Hello, worlld !! Rem 指定したテキストに出力 Echo Hello, world !! > C:\log.log Rem 指定したテキストに追記 Echo Hello, world !! >> C:\log.log Rem どこにも出力しない Echo Hello, world !! > nul Rem 改行 Echo. |
条件分岐 ()で囲めば複数のコマンド可 |
If %m%==3 (GoTo END) ELSE (GoTo END) |
入力を変数に受け取る Set /p 変数 |
Set /p m="* Select memu 0:? / 1:on / 2:off / 3:end * " |
パイプ(コマンドの出力を次のコマンドに渡す) |
Rem IPConfigの結果から". : "という文字列がある行だけ出力 IPConfig | Find ". : " |
ラベル (GoTo ラベル名 でジャンプ) |
:DEFAULT |
以下、上記のファイルとは関係ありませんが・・・
今日の日付が取れます。 下記の結果は20090227 |
Echo %date:/=% |
forループもあります。 下記の例だと192.168.1.1 ~ 192.168.1.254までのIPアドレスにpingを打ちます(笑)ping結果はIP.txtに保存されます。意外に結構役に立つ。 |
for /L %%f in (1,1,254) do ping -n 1 -w 50 192.168.1.%%f >>IP.txt |
後は関係ないけど、SQLサーバー向けとか、思い出したのでついでに。
SQLServerが入ってれば・・・ クエリ発行バッチとか作れたりします。 |
@SET /p SERVERNAME="サーバー名→" @SET /p DBNAME="データベース名→" @SET /p USERNAME="ユーザー名" @SET /p PASSWORD="パスワード→" @SET Q="DELETE FROM HogeTable" @osql -U%USERNAME% -P%PASSWORD% -S%SERVERNAME% -d%DBNAME% -Q%Q% |
もちろんSELECTも可。結果がコンソールに表示される。 |
@SET /p SERVERNAME="サーバー名→" @SET /p DBNAME="データベース名→" @SET /p USERNAME="ユーザー名" @SET /p PASSWORD="パスワード→" @SET Q="SELECT * FROM HogeTable" @osql -U%USERNAME% -P%PASSWORD% -S%SERVERNAME% -d%DBNAME% -Q%Q% |
さらに関係ないけど、しょぼいフォルダ検索とかw
Pathに探したいディレクトリのパス、eに拡張子を入れると、ヒットしたファイルがコンソールに一覧され、冗長ですが、ログファイルにも同じだけループして結果を書き出します。(再帰探索はしません) ポイントはログ名。「%~n0」で実行されている自分自身の名前を取れます。 |
@Set /p d="Path : " @Set /p e="Extention : " @Echo --------------------------------------------------- @for %%a in (%d%\*%e%) do @echo %%a @for %%a in (%d%\*%e%) do @echo %%a >>%~n0.log @Echo --------------------------------------------------- @Echo ----- Press any key to exit ----- @pause > nul |
参考はこちら
netsh interface ipコマンドでIPアドレスを設定する http://itpro.nikkeibp.co.jp/article/COLUMN/20060809/245476/ 持ち歩いているノート PC で簡単に TCP/IP の設定を変えたい http://www.monyo.com/technical/windows/26.html Rem ローカルエリア接続設定切替え用スクリプト(Windows2000/XP) http://www.bais.chubu.ac.jp/~tatsuoka/apnet21/page2.html |
0 件のコメント:
コメントを投稿