标题: [网络连接] 批处理中如何取出IP地址中的最后一段数字。 [打印本页]
作者: WuZhengQiang 时间: 2023-2-14 23:58 标题: 批处理中如何取出IP地址中的最后一段数字。
本帖最后由 WuZhengQiang 于 2023-2-14 23:59 编辑
我们最近在做IPv6双栈改造,即在原有的IPv4地址上添加一个新的IPv6地址。需要做以下事情:
1.在多块网卡中找到IP地址在172.16.100.1-254的之间的网卡。备注:办公的网络使用地址段为172.16.100.0/24,只有这个网络需要改造:
2.取出该网卡IPv4地址的最后一位数字(主机位)。
3.使用这个主机位和IPv6的网络位240e:46:e706:4001组成一个新的IPv6地址。
谢谢大家
作者: 23618342 时间: 2023-2-15 09:02
- set str=240e:46:e706:4001::
- for /f "tokens=4 delims=. " %%i in (ipv4.txt) do echo %str: =%%%i>>ipv6.txt
- pause
复制代码
我ip地址放在ipv4文本里面,然后生成一个IPV6的文本
172.16.100.1--------->240e:46:e706:4001::1
172.16.100.2--------->240e:46:e706:4001::2
作者: WuZhengQiang 时间: 2023-2-15 09:53
本帖最后由 WuZhengQiang 于 2023-2-15 10:51 编辑
回复 2# 23618342
非常感谢你的热情帮助,我的表达可能有歧义。
我的意思是说
提取出网卡中iPv4地址的最后一位(主机位)
固定的IPv6网络位+IPv4主机位 组成一个新的IPv6地址。
然后将这个IPv6地址 配回这个网卡上。
请问如何操作。
作者: 1073 时间: 2023-2-15 14:57
- @echo off
- setlocal enabledelayedexpansion
-
- rem 获取所有本地连接信息
- for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr "Ethernet adapter"') do (
- set "adapter=%%i"
- set "adapter=!adapter:~1!"
- echo !adapter! | findstr /r "^Ethernet adapter .*$" >nul || (
- set "ipv4="
- for /f "tokens=2 delims=:" %%j in ('ipconfig /all ^| findstr /c:"!adapter!" /c:"IPv4 Address"') do (
- set "val=%%j"
- set "val=!val:~1!"
- set "val=!val: =!"
- if not defined ipv4 (
- echo !val! | findstr /r "^172\.16\.100\..*$" >nul && set "ipv4=!val:~-1!"
- )
- )
- if defined ipv4 (
- set "ipv6=240e:46:e706:4001:!ipv4!"
- netsh interface ipv6 set address "!adapter!" "!ipv6!" store=persistent >nul
- echo !adapter!: !ipv6!
- )
- )
- )
复制代码
作者: terse 时间: 2023-2-15 19:03
这个能读到吗- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1*delims=:" %%a in ('ipconfig /all ^| findstr /i "ipv4 IPv6"') do (
- for /f "delims=( " %%i in ("%%b") do (
- if defined ip6 (
- set ip4=%%~xi
- echo;!ip6!:!ip4:.=!
- ) else set "ip6=%%i"
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |