Batch file 批处理脚本检查是否存在外部IP
有人能帮我吗 我正在尝试制作批次,该批次将:Batch file 批处理脚本检查是否存在外部IP,batch-file,networking,command-line,command-prompt,Batch File,Networking,Command Line,Command Prompt,有人能帮我吗 我正在尝试制作批次,该批次将: 得到我的ip 重置路由器 检查是否有更改 对于批处理,我使用命令promt-command for /f "skip=4 usebackq tokens=2" %%a in ('nslookup myip.opendns.com resolver1.opendns.com') do echo %%a 要获取外部IP地址,此代码仅适用于外部IP,因此您可以从以下内容开始: @echo off set "IPLog=%userprofile%\Desk
for /f "skip=4 usebackq tokens=2" %%a in ('nslookup myip.opendns.com resolver1.opendns.com') do echo %%a
要获取外部IP地址,此代码仅适用于外部IP,因此您可以从以下内容开始:
@echo off
set "IPLog=%userprofile%\Desktop\%~n0.txt"
Set "MyCommand=nslookup myip.opendns.com resolver1.opendns.com 2^>nul"
for /f "skip=4 delims=: tokens=2" %%a in ('%MyCommand%') do (
Set "MyExtIP=%%a"
)
Call :Trim %MyExtIP%
echo My Extenal IP Adress is : %MyExtIP%
echo My Extenal IP Adress is : %MyExtIP% > "%IPLog%"
PAUSE & start "" "%IPLog%" & exit
::*************************************************************************************
:Trim <String>
set "vbsfile=%tmp%\%~n0.vbs"
(
echo Wscript.echo Trim("%~1"^)
)>"%vbsfile%"
for /f "delims=" %%a in ('Cscript /nologo "%vbsfile%"') do ( set "MyExtIP=%%a" )
If Exist "%vbsfile%" Del "%vbsfile%"
exit /b
::*************************************************************************************
@echo关闭
设置“IPLog=%userprofile%\Desktop\%~n0.txt”
设置“MyCommand=nslookup myip.opendns.com resolver1.opendns.com 2^>nul”
对于(“%MyCommand%”中的/f“skip=4 delims=:tokens=2”%%a do(
设置“MyExtIP=%%a”
)
呼叫:修剪%MyExtIP%
回显我的扩展IP地址是:%MyExtIP%
回显我的扩展IP地址是:%MyExtIP%>%IPLog%
暂停并启动“”%IPLog%”并退出
::*************************************************************************************
:修剪
设置“vbsfile=%tmp%\%~n0.vbs”
(
echo Wscript.echo修剪(“%1”^)
)>%vbsfile%
对于/f“delims=“%%a in('Cscript/nologo”%vbsfile%”)do(设置“MyExtIP=%%a”)
如果存在“%vbsfile%”删除“%vbsfile%”
退出/b
::*************************************************************************************
编辑:2016年9月10日
@echo关闭
:Checkloop
电话:GetIP
电话:CheckIP
rem goto:检查循环
::******************************************************************************
:GetIP
设置“IPLog=%userprofile%\Desktop\%~n0.txt”
设置“MyCommand=nslookup myip.opendns.com resolver1.opendns.com 2^>nul”
对于(“%MyCommand%”中的/f“skip=4 delims=:tokens=2”%%a Do(
设置“MyExtIP=%%a”
)
呼叫:修剪%MyExtIP%
回显我的扩展IP地址为:“%MyExtIP%”
回显%MyExtIP%>%IPLog%
退出/b
::*************************************************************************************
:CheckIP
如果不存在“%IPLog%”,则调用:GetIP
rem Set/p CheckIP=“%vbsfile%”
对于/f“delims=“%%a in('Cscript/nologo”%vbsfile%”)do(设置“MyExtIP=%%a”)
如果存在“%vbsfile%”删除“%vbsfile%”
退出/b
::*************************************************************************************
这似乎只获取公共IP地址。如果ISP使用CGN,它将无法获取外部(WAN)IP地址。对于CGN,它将获得ISP的公共IP地址,这可能没有用。越来越多的ISP使用CGN(只需在网上搜索),这给最终用户带来了问题。不幸的是,似乎大多数使用CGN的ISP没有使用为CGN保留的IPv4范围(`100.64.0.0/10'),他们使用的是RFC 1918专用地址空间,这可能与客户的网络地址冲突。您好,谢谢您的回答!你现在能帮我完成这件事吗。如果我把这个代码放在某个“check_ip.bat”中,我的最后一批应该是这样的:@Echo off check_ip.bat:START reset_router.bat check_ip.bat If ip_previous==ip_NEW goto START else FINISH::FINISH exit
这个代码应该放在某个“final.bat”中如何处理这个IF部分?@Jovan检查我上次的编辑,我不知道如何重置你的路由器?@Hackoo我通过bat文件(使用/执行TST10命令删除和创建PoEE)进行操作。通常的telnet没有等待选项(据我所知),所以我现在需要把reset.bat
放在你优秀的代码中的什么地方?请你发布你所有的代码(从get\u my\u ip
到ip\u不一样
)
@echo off
set "IPLog=%userprofile%\Desktop\%~n0.txt"
Set "MyCommand=nslookup myip.opendns.com resolver1.opendns.com 2^>nul"
for /f "skip=4 delims=: tokens=2" %%a in ('%MyCommand%') do (
Set "MyExtIP=%%a"
)
Call :Trim %MyExtIP%
echo My Extenal IP Adress is : %MyExtIP%
echo My Extenal IP Adress is : %MyExtIP% > "%IPLog%"
PAUSE & start "" "%IPLog%" & exit
::*************************************************************************************
:Trim <String>
set "vbsfile=%tmp%\%~n0.vbs"
(
echo Wscript.echo Trim("%~1"^)
)>"%vbsfile%"
for /f "delims=" %%a in ('Cscript /nologo "%vbsfile%"') do ( set "MyExtIP=%%a" )
If Exist "%vbsfile%" Del "%vbsfile%"
exit /b
::*************************************************************************************
@echo off
:Checkloop
Call :GetIP
Call :CheckIP
rem goto:checkloop
::******************************************************************************
:GetIP
set "IPLog=%userprofile%\Desktop\%~n0.txt"
Set "MyCommand=nslookup myip.opendns.com resolver1.opendns.com 2^>nul"
for /f "skip=4 delims=: tokens=2" %%a in ('%MyCommand%') Do (
Set "MyExtIP=%%a"
)
Call :Trim %MyExtIP%
echo My Extenal IP Adress is : "%MyExtIP%"
echo %MyExtIP% > "%IPLog%"
Exit /b
::*************************************************************************************
:CheckIP
If Not Exist "%IPLog%" Call :GetIP
rem Set /p CheckIP=<%IPLog%
for /f "delims= " %%g in ('Type "%IPLog%"') do ( set "CheckIP=%%g")
rem echo "%CheckIP%" from file & pause
If "%CheckIP%"=="%MyExtIP%" ( Cls & color 0A & echo the IP Adress = %CheckIP% does not changed
) else (
Cls & Color 0C & echo The IP Adress is changed to %MyExtIP%
)
Timeout /T 30 /Nobreak
goto:checkloop
::*************************************************************************************
:Trim <String>
set "vbsfile=%tmp%\%~n0.vbs"
(
echo Wscript.echo Trim("%~1"^)
)>"%vbsfile%"
for /f "delims=" %%a in ('Cscript /nologo "%vbsfile%"') do ( set "MyExtIP=%%a" )
If Exist "%vbsfile%" Del "%vbsfile%"
exit /b
::*************************************************************************************