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

[网络连接] 批处理中如何取出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地址。
谢谢大家


  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

TOP

本帖最后由 WuZhengQiang 于 2023-2-15 10:51 编辑

回复 2# 23618342

非常感谢你的热情帮助,我的表达可能有歧义。

我的意思是说   
提取出网卡中iPv4地址的最后一位(主机位)
固定的IPv6网络位+IPv4主机位 组成一个新的IPv6地址。
然后将这个IPv6地址 配回这个网卡上。


请问如何操作。

TOP

  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. )
复制代码

TOP

这个能读到吗
  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
复制代码

TOP

返回列表