Board logo

标题: [网络连接] 批处理中如何取出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

  1. set str=240e:46:e706:4001::
  2. for /f "tokens=4 delims=. " %%i  in  (ipv4.txt) do echo %str: =%%%i>>ipv6.txt
  3. 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

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 获取所有本地连接信息
  4. for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr "Ethernet adapter"') do (
  5.     set "adapter=%%i"
  6.     set "adapter=!adapter:~1!"
  7.     echo !adapter! | findstr /r "^Ethernet adapter .*$" >nul || (
  8.         set "ipv4="
  9.         for /f "tokens=2 delims=:" %%j in ('ipconfig /all ^| findstr /c:"!adapter!" /c:"IPv4 Address"') do (
  10.             set "val=%%j"
  11.             set "val=!val:~1!"
  12.             set "val=!val: =!"
  13.             if not defined ipv4 (
  14.                 echo !val! | findstr /r "^172\.16\.100\..*$" >nul && set "ipv4=!val:~-1!"
  15.             )
  16.         )
  17.         if defined ipv4 (
  18.             set "ipv6=240e:46:e706:4001:!ipv4!"
  19.             netsh interface ipv6 set address "!adapter!" "!ipv6!" store=persistent >nul
  20.             echo !adapter!: !ipv6!
  21.         )
  22.     )
  23. )
复制代码

作者: terse    时间: 2023-2-15 19:03

这个能读到吗
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1*delims=:" %%a in ('ipconfig /all ^| findstr /i "ipv4  IPv6"') do (
  3.      for /f "delims=( " %%i in ("%%b") do (
  4.            if defined ip6 (
  5.               set ip4=%%~xi
  6.               echo;!ip6!:!ip4:.=!
  7.            )  else set "ip6=%%i"
  8.      )
  9. )
  10. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2