繁体   English   中英

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

[英]How to convert IP address to integer using batch file

我有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。示例:

Main_Batch_File.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

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

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所建议,如果您需要从当前地址开始,请将增量移到call语句后面。

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

@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 
  )
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM