目的:
在同时接入电信和网通的网络的情况下,电信网络出故障,服务器的ip设置自动切换到网通,网通网络出故障,服务器的ip设置自动切换到电信
(这是一种方法,适合服务器少的情况下,多的时候在两个网络里分别设置DNS服务器,域名主要DNS设在电信,指向电信外网ip,辅助DNS设在网通,指向网通外网ip,两个网络的应用服务器和数据库服务器分别用群集连接起来,两个网络里的路由器指向群集ip,或者用一个双WAN口路由器也可以)



代码:
@echo off
@set flag= 1
:loop
@ping -n 1 -l 1 [url]www.163.com[/url] | find "Reply" >nul && goto loop
::ip setting one
if %flag% == 1 netsh interface ip set address name="Local Area Connection" source=static addr="192.168.2.151" mask="255.255.255.0" gateway="192.168.2.3" gwmetric=1 && netsh interface ip set dns name="Local Area Connection" source=static addr="192.168.2.2" && netsh interface ip set wins name="Local Area Connection" source=static addr="192.168.2.2" && set flag= 2 && echo "switch to 1" && goto loop
::ip setting two
if %flag% == 2 netsh interface ip set address name="Local Area Connection" source=static addr="192.168.2.191" mask="255.255.255.0" gateway="192.168.2.3" gwmetric=1 && netsh interface ip set dns name="Local Area Connection" source=static addr="192.168.2.2" && set flag= 1 && echo "switch to 2" && goto loop




总结:
(1)echo off的情况下,不可以输出变量(变量可以引用、比较、赋值,但不能echo),可以输出写死的字符串或整数
(2)"set flag=1"是正常的语法,"set flag= 1"是正常的语法,"set flag = 1"是错误的语法(注意空格)
(3)执行的命令涉及到注册表的修改,像netsh等,需要启动"Remote Registry Service"