[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 如何实现间歇性地更换IP地址

本帖最后由 pcl_test 于 2017-5-25 14:51 编辑

求一个定时修改ip地址的批处理文件在线等啊急

只需要修改ip就可以了,2个ip来回修改每个2分钟修改一次(最好教一下怎么修改这个时间)


[ 本帖最后由 fanqie0223 于 2010-6-26 15:50 编辑 ]
1

评分人数

    • Batcher: 问题解决后请不要大肆修改提问帖 http://b ...PB -20

先检测ip0.0.0.0
如果是则换为0.0.0.1
检测ip为0.0.0.1则换为0
以后每2分钟换一次ip
都是只要换ip就ok子网,网关dns不变

TOP

自己做了一个简单的现在问题是偶不会将中间的一段重复。公司做了监控如果没装客户端的话只能上网2分钟就要换一个ip在上谢谢

TOP

楼主顶楼的竖排文字很难读

以下代码中 /mo 后面的数字 即为 时间间隔, 单位 分钟
ipa, ipb, mask, gateway 各变量请楼主根据自己的要求自行改动, 我在自己机器上已测试可正常运行.
  1. @echo off & setlocal enabledelayedexpansion
  2. set "taskName=IP_Switch"
  3. if not exist "%windir%\tasks\!taskName!.job" (
  4.    rem 确保 Task Scheduler 服务启动
  5.    sc config Schedule start= Auto>nul
  6.    (sc query Schedule | find "RUNNING">nul) || (
  7.    ((sc query Schedule | find "PAUSED">nul) && sc continue Schedule) || sc start Schedule
  8.    )
  9.    rem 建立计划任务运行本程序
  10.    schtasks /create /tn "!taskName!" /sc minute /mo 2 /tr %~s0 /ru system
  11. )
  12. rem 要运行的任务的实体
  13. set "ipa=192.168.1.101" & set "ipb=192.168.1.102" & set "mask=255.255.255.0" & set "gateway=192.168.1.1"
  14. for /f "tokens=2 delims=[]" %%i in ('ping -n 1 %computername% ^| find "["') do (
  15.   for /f %%a in ('wmic nicconfig where "ipenabled='true'" get index') do (
  16.     if /i "%%a" neq "index" (
  17.       for /f "delims=}{" %%b in ('wmic nicconfig where "index=%%a" get ipaddress') do (
  18.         if "%%~b"=="%%i" for /f "skip=1" %%c in ('wmic nic where "index=%%a" get NetConnectionID') do (
  19.           if "%%~b"=="!ipa!" (netsh interface ip set address name="%%c" source=static addr=!ipb! mask=!mask! gateway=!gateway! 1
  20.           ) else (
  21.             netsh interface ip set address name="%%c" source=static addr=!ipa! mask=!mask! gateway=!gateway! 1
  22.           )
  23.         )
  24.       )
  25.     )
  26.   )
  27. )
复制代码

TOP

http://baike.baidu.com/view/1225177.htm
Netsh 概述
我很好奇如果每两分钟需要换一个IP的话,上网该是怎样的痛苦

[ 本帖最后由 sgaizxt001 于 2010-6-23 21:17 编辑 ]
努力学习,努力挣分

TOP

回复 5楼 的帖子

另外一个应用场景是,ADSL用户用这个方法切换IP之后刷投票、刷流量。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我的使用场景
公司花大价钱买了一个网管软件,客户机需要装客户端就被监控如果不装就只能上网9分半钟(今早才掐的时间)然后就会出现ip冲突不能上网现在我可以使用换ip的方法上网(不知道是不是网管有意留的漏洞竟然没有绑mac呵呵)

绝对新手看我的注册日期就知道自己糊写了一个



echo off
cls
echo 欢迎使用此程序运行后请将程序最小化能保证您正常上网15分钟
echo off
netsh interface ip set address name="本地连接" source=static addr=192.168.0.2 mask=255.255.255.0
netsh interface ip set address name="本地连接" gateway=192.168.0.1 gwmetric=0
netsh interface ip set dns name="本地连接" source=static addr=218.2.135.1
netsh interface ip add dns name="本地连接" addr=202.102.4.141
echo off
cls
echo 欢迎使用此程序运行后请将程序最小化能保证您正常上网15分钟
echo off
netsh interface ip set address name="本地连接" source=static addr=192.168.0.3 mask=255.255.255.0
netsh interface ip set address name="本地连接" gateway=192.168.0.1 gwmetric=0
netsh interface ip set dns name="本地连接" source=static addr=218.2.135.1
netsh interface ip add dns name="本地连接" addr=202.102.4.141
echo off
cls
echo 欢迎使用此程序运行后请将程序最小化能保证您正常上网15分钟
echo off
netsh interface ip set address name="本地连接" source=static addr=192.168.0.4 mask=255.255.255.0
netsh interface ip set address name="本地连接" gateway=192.168.0.1 gwmetric=0
netsh interface ip set dns name="本地连接" source=static addr=218.2.135.1
netsh interface ip add dns name="本地连接" addr=202.102.4.141
ping -n 120 127.0.0.1>nul
echo off
cls
echo 还有13分钟
echo off
netsh interface ip set address name="本地连接" source=static addr=192.168.0.5 mask=255.255.255.0
netsh interface ip set address name="本地连接" gateway=192.168.0.1 gwmetric=0
netsh interface ip set dns name="本地连接" source=static addr=218.2.135.1
netsh interface ip add dns name="本地连接" addr=202.102.4.141
ping -n 120 127.0.0.1>nul
echo off
cls
echo 还有11分钟
echo off
netsh interface ip set address name="本地连接" source=static addr=192.168.0.2 mask=255.255.255.0
netsh interface ip set address name="本地连接" gateway=192.168.0.1 gwmetric=0
netsh interface ip set dns name="本地连接" source=static addr=218.2.135.1
netsh interface ip add dns name="本地连接" addr=202.102.4.141
ping -n 0 127.0.0.1>nul
echo OK...请按任意按键退出!
pause
exit

TOP

上面是昨晚写的,今天去公司一早花20分钟又优化了一下哈哈
然后领导面前演示了一下竟然不成功,原因是上一次运行后我就关闭了导致使用了一个a地址无法被替换
思路先用一个a地址迅速换b10分钟后换c然后就是b换不换a,很傻的脚本不过自己第一次写这个玩意很开心

TOP

回5楼偶只是上公司内网,公司内网很大的(全国的)今天竟然发现换ip的时候竟然pingdns竟然不丢包的

TOP

4楼帮忙写的只能更换一次ip只能在开始的时候换一次ip之后就每2分钟换不了啊

TOP

回复 10 楼的帖子

4 楼是利用的计划任务, 不够完善, 下面给出直接批处理循环, 但批处理程序不能关闭
  1. @echo off & setlocal enabledelayedexpansion
  2. call :foundACName ACName
  3. set "ipa=192.168.1.101" & set "ipb=192.168.1.102" & set "mask=255.255.255.0" & set "gateway=192.168.1.1"
  4. set /a mm=1!time:~3,2!-100, ms=2 & rem ms 为时间间隔
  5. for /l %%k in (0 0 0) do (
  6.   set /a "diff=1!time:~3,2!-100+60-mm, diff%%=60"
  7.   if !diff! geq !ms! ( set /a mm=1!time:~3,2!-100
  8.     for /f "tokens=2 delims=[]" %%i in ('ping -n 1 %computername% ^| find "["') do (
  9.       if "%%i"=="!ipa!" (netsh interface ip set address name="!ACName!" source=static addr=!ipb! mask=!mask! gateway=!gateway! 1
  10.       ) else (
  11.         netsh interface ip set address name="!ACName!" source=static addr=!ipa! mask=!mask! gateway=!gateway! 1
  12.       )
  13.       for /f "tokens=2 delims=[]" %%a in ('ping -n 1 %computername% ^| find "["') do echo %%a
  14.     )
  15.   )
  16. )
  17. exit /b
  18. :foundACName ACName rem 找出当前活动连接的名称
  19. for /f "tokens=2 delims=[]" %%i in ('ping -n 1 %computername% ^| find "["') do (
  20.   for /f "skip=1" %%a in ('wmic nicconfig where "ipenabled='true'" get index') do (
  21.     for /f "delims=}{" %%b in ('wmic nicconfig where "index=%%a" get ipaddress') do (
  22.       if "%%~b"=="%%i" for /f "tokens=1-2 delims==" %%c in ('wmic nic where "index=%%a" get NetConnectionID /value') do (
  23.         for /f "delims=" %%z in ("%%d") do set "_%%c=%%z"
  24.       )
  25.     )
  26.   )
  27. )
  28. set %1=!_NetConnectionID!&echo 当前活动连接为: "!%1!"
  29. exit /b
复制代码
另给出一个实时监控显示 IP 的代码:
  1. @echo off & setlocal enabledelayedexpansion& set "color=02"& color !color!&mode con lines=1 cols=28
  2. for /l %%i in (0 0 0) do for /f "tokens=2 delims=[]" %%a in ('ping -a -n 1 %computername% ^| find "["') do (
  3.   if "%%a" neq "!ip!" set ip=%%a&set color=!color:~1!!color:~0,-1!&color !color!
  4.   cls&set /p=!time! %%a<nul
  5. )
复制代码

[ 本帖最后由 neorobin 于 2010-6-24 21:54 编辑 ]

TOP

谢谢楼上的只是现在偶还有一个问题是运行后不能马上更改ip能不能在帮忙修改一下谢谢

TOP

回 12 楼的帖子

取消 变量 mm 的第一次赋值即可,即 把这行
  1. set /a mm=1!time:~3,2!-100, ms=2 & rem ms 为时间间隔
复制代码
改为
  1. set /a ms=2 & rem ms 为时间间隔
复制代码
另外 11 楼的代码重新编辑过的, 发 11 楼帖时的代码是不支持 连接名称中含有 空格的, 现在修改过的可兼容含 空格 的连接名称, 请重新复制代码

[ 本帖最后由 neorobin 于 2010-6-24 22:10 编辑 ]

TOP

新手新方法
echo off
cls
echo 欢迎使用此程序运行后请将程序最小化能保证您正常上网15分钟
echo off
netsh interface ip set address name="本地连接" source=static addr=192.168.0.2 mask=255.255.255.0
netsh interface ip set address name="本地连接" gateway=192.168.0.1 gwmetric=0
netsh interface ip set dns name="本地连接" source=static addr=218.2.135.1
netsh interface ip add dns name="本地连接" addr=202.102.4.141
我把这个放在最前头。。。。。。
搞定

TOP

如何在用户点击关闭批处理文件跳出对话框警告

TOP

返回列表