如何使用批处理文件将IP地址转换为整数

问题描述 投票:0回答:2

我有 2 个问题陈述

1:

我需要从文本文件中读取 IP 地址并将该值加 1 并将其存储在变量中。这一切都是我必须使用批处理脚本完成的。

这就是我的文本文件的样子 -

MyIpAddressList.txt
192.168.1.105

我能够将其作为字符串读取并存储和打印

for /f "delims=" %%x in (IPADDRESSLIST.txt) do set /p IPAddress=%%x+1
ECHO %IPAddress%

但是当我尝试将其读取为提到的数字时

set /a IPAddress=%%x+1"
它不起作用。

2:

我必须运行 100 次循环并将此 IP 地址作为 输入到另一个批处理脚本并将此 IP 地址增加 1。

示例:

主_批_文件.bat

READ MyIpAddressList.txt and store IP address in IPAddress
IPAddress = 192.168.1.105
LOOP 100 times
CALL Another_Batch_Script(IPAddress)
IPAddress++
LOOP END

我不确定是否可以使用批处理文件,如果这没有意义,请道歉。

windows batch-file
2个回答
2
投票
setlocal enabledelayedexpansion
for /f "tokens=1,2,3,4 delims=." %%a in (%ipaddress%) do (
  set/a suffix=1%%d-1000
  for /l %%i in (1,1,100) do (
    set/a suffix+=1
    call "yourscript.bat" %%a.%%b.%%c.!suffix! 
  )

首先我们将 ipaddress 分成四个令牌。然后处理第四个。

set/a suffix=1%%d-1000
避免低于 100(即 080)的数字被视为八进制

编辑:正如TripeHound建议的,如果您需要从当前地址开始,请将增量移到调用语句后面。


0
投票

elzoologico 的解决方案进行了扩展,以避免“溢出”问题,TripeHound 提到:

@echo off
set ipaddress=192.168.001.015
setlocal enabledelayedexpansion
for /f "tokens=1-4 delims=." %%a in ("%ipaddress%") do (
  set /a suffix=1%%d-1000
  set /a final=suffix+100
  if !final! gtr 255 set final=255
  for /l %%i in (!suffix!,1,!final!) do (
    ECHO call "yourscript.bat" %%a.%%b.%%c.%%i 
  )
)
© www.soinside.com 2019 - 2024. All rights reserved.