如何将ip地址拆分为单独的八位字节并在cmd中执行算术运算

时间:2013-05-31 00:09:30

标签: variables batch-file cmd ip-address

我要做的是通过cmd配置一些vlan范围。到目前为止,我所做的是检索域控制器的IP地址并删除值前面的空格。我使用以下命令完成了这个:

通过本地cmd提取IP地址     for / f“tokens = 2 delims =:”%i in('ipconfig ^ | find / i“IPv4 Address”')do ip_address =%i

示例结果:set ip_address = 10.0.0.25

rem从ip address var中删除空格     set ip_address =%ip_address:=%

echo%ip_address%现在导致10.0.0.25没有前面的空格。

接下来我要做的是将ip_address变量拆分为单独的八位字节变量,以便可以对所选的八位字节执行算术运算。

例如:10.0.0.25然后可以被操纵以反映10。[+ 100] .0。[ - 24]

所需的结果将是10.100.0.1

我更倾向于使用Windows命令行严格执行此操作,但如果有更好的方法退出,我愿意接受建议。

提前致谢 乔尔

3 个答案:

答案 0 :(得分:3)

尝试将八位字节拆分为变量。

@echo off
set "ip=10.0.0.25"
SET "offsets=0.100.0.-24"

@echo off
for /f "tokens=1-4 delims=. " %%a in ("%ip%") do (
set octetA=%%a
set octetB=%%b
set octetC=%%c
set octetD=%%d
)
FOR /f "tokens=1-4 delims=." %%a in ("%offsets%") do (
SET /a octetA+=%%a
SET /a octetB+=%%b
SET /a octetC+=%%c
SET /a octetD+=%%d
)
echo "%octetA%","%octetB%","%octetC%","%octetD%"
pause

答案 1 :(得分:1)

这与foxidrive的解决方案相同,但稍微压扁了......:)

@echo off
set "ip= 10.0.0.25"
SET "offsets=0.100.0.-24"

for /F "tokens=1-4 delims=. " %%a in ("%ip%") do (
   for /F "tokens=1-4 delims=." %%i in ("%offsets%") do (
      set /A octetA=%%a+%%i, octetB=%%b+%%j, octetC=%%c+%%k, octetD=%%d+%%l
   )
)
echo "%octetA%","%octetB%","%octetC%","%octetD%"
pause

答案 2 :(得分:-1)

您知道autohotkey吗?

此外,您可以尝试powershell script