我写了一个BAT脚本获取指定网卡的IP地址,但是一直不成功,求大佬帮我看看
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我写了一个BAT脚本获取指定网卡的IP地址,但是一直不成功,求大佬帮我看看相关的知识,希望对你有一定的参考价值。
for /f "tokens=4*" %%a in ('netsh interface show interface ^| findstr "已连接"') do set "ConName=%%~a"
echo 本机可上网网卡名称:%ConName%,回车直接输入默认可上网网卡名称
set /p ConName=请输入可上网网卡名称:
for /f "tokens=1,2 delims=:(" %%a in ('ipconfig /all') do (
if "%%a" == "以太网适配器 以太网" Set "flag=1"
if defined flag ( if "%%a" == " IPv4 地址 . . . . . . . . . . . . "(set "IP=%%b" goto ShowIP))
)
:ShowIP
echo IP:%IP%
pause
这是代码与ipconfig /all在CMD下运行的显示
for /f "tokens=4*" %%a in ('netsh interface show interface ^| findstr "已连接"') do set "ConName=%%~a"
echo 本机可上网网卡名称:%ConName%,回车直接输入默认可上网网卡名称
echo "以太网适配器 %ConName%"
set /p ConName=请输入可上网网卡名称:
for /f "tokens=1,2 delims=:" %%a in ('ipconfig') do (
if "%%a"=="以太网适配器 %ConName%" set "flag=1"
if "!flag!"=="1" (if "%%a"==" IPv4 地址 . . . . . . . . . . . . " set "ip=%%b")
)
echo IP=%ip%
pause 参考技术B @echo off&setlocal EnableDelayedExpansion
for /f "tokens=3*" %%a in ('netsh interface show interface ^| findstr "已连接"') do set "ConName=%%~b"
echo 本机可上网网卡名称: %ConName%,回车直接输入默认可上网网卡名称
set /p ConName=请输入可上网网卡名称:
for /f "tokens=2 delims=:(" %%a in ('ipconfig /all^|findstr /c:"IPv4 地址"') do (
set "IP=%%a" goto ShowIP
)
:ShowIP
echo IP:%IP%
pause 参考技术C @echo off & setlocal enabledelayedexpansion
for /f "delims=" %%a in ('ipconfig') do (
set str=%%a
set str=!str: =!
if "!str:~-6!"=="本地连接2:" set a=1
if "!str:~0,9!"=="IPAddress" if "!a!"=="1" (for /f "tokens=2 delims=:" %%b in ("!str!") do echo %%b&goto end)
) :end pause追答
还是不对啊兄弟,这个答案我刚才就已经搜索出来试过了,您能帮我看看我写的是在哪出问题了么?或者你写一个给我
追答@echo off & setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%a in ('ipconfig') do (
if "%%a"=="Ethernet adapter 本地连接" set "flag=1"
if "%%a"=="以太网适配器 本地连接" set "flag=1"
if "!flag!"=="1" (if "%%a"==" IP Address. . . . . . . . . . . . " set "ip=%%b")
if "!flag!"=="1" (if "%%a"==" IPv4 地址 . . . . . . . . . . . . " set "ip=%%b")
if "%%a"==" Default Gateway . . . . . . . . . " set flag=0
if "%%a"==" 默认网关. . . . . . . . . . . . . " set flag=0
)
echo IP=%ip%
pause
额,那什么,我用的不是BAT
追问那你用的啥哇?
# extract version/subversion
self._nmap_version_number = int(line[rv.start():rv.end()])
self._nmap_subversion_number = int(line[rsv.start()+1:rsv.end()])
break
Windowswin10电脑通过bat脚本自动配置IP地址
1.需求描述
现在有win10电脑一台,但是由于办公环境需要随时切换内外网,所以经常需要手工配置IP地址。内外需要配置固定IP地址,外网需要配置为自动获取IP地址
2.实现过程
2.1 代码部分
@echo off
rem 强制获取管理员权限
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
rem //设置变量
set NAME="以太网 2"
rem //以下属性值可以根据需要更改
set ADDR=100.101.0.19
set MASK=255.255.255.0
set GATEWAY=100.101.0.1
set DNS1=
set DNS2=
rem //以上属性依次为IP地址、子网掩码、网关、首选DNS、备用DNS
echo 当前可用操作有:
echo 1 设置为静态IP
echo 2 设置为动态IP
echo 3 退出
echo 请选择后回车:
set /p operate=
if %operate%==1 goto 1
if %operate%==2 goto 2
if %operate%==3 goto 3
:1
echo 正在设置静态IP,请稍等...
rem //可以根据你的需要更改
echo IP地址 = %ADDR%
echo 掩码 = %MASK%
echo 网关 = %GATEWAY%
netsh interface ipv4 set address %NAME% static %ADDR% %MASK% %GATEWAY%
echo 首选DNS = %DNS1%
if "%DNS1%"=="" (echo DNS1为空) else netsh interface ipv4 set dns %NAME% static %DNS1%
echo 备用DNS = %DNS2%
if "%DNS2%"=="" (echo DNS2为空) else (netsh interface ipv4 add dns %NAME% %DNS2%)
echo **********已设置为静态IP:%ADDR%***********
pause
goto 3
:2
echo 正在设置动态IP,请稍等...
echo 正在从DHCP自动获取IP地址...
netsh interface ip set address %NAME% dhcp
echo 正在从DHCP自动获取DNS地址...
netsh interface ip set dns %NAME% dhcp
echo **********已设置为动态IP地址***********
pause
goto 3
:3
exit
2.2 文件编码
复制代码到新建文本文档.txt
中
`
点击文件 -->> 另存为
如下图黄色标记部分选择编码格式为:ANSI,注意:需要将文件的后缀名.txt
修改为 .bat
2.3 配置网卡名
在脚本中需要根据自己电脑修改相应的网卡名配置
此处我的优先网卡名是【以太网 2】(注意:字与数字2之间是存在空格的)
2.4 运行脚本
双击【自动配置IP地址.bat】,弹出【你要允许此应用对你的窗口进行更改吗?】提示,选择【是】后即可选择配置IP
以上是关于我写了一个BAT脚本获取指定网卡的IP地址,但是一直不成功,求大佬帮我看看的主要内容,如果未能解决你的问题,请参考以下文章