1

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

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

示例结果:设置 ip_address= 10.0.0.25

rem 从 ip 地址中删除空白 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 命令行来完成此任务,但如果有更好的方法退出,我愿意接受建议。

提前感谢乔尔

4

3 回答 3

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
于 2013-05-31T01:16:38.187 回答
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
于 2013-05-31T12:47:39.043 回答
-1

你知道自动热键吗?

此外,您可以尝试使用powershell 脚本

于 2013-05-31T00:15:28.817 回答