我有 2 个问题陈述
我需要从文本文件中读取 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"
它不起作用。
我必须运行 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
我不确定是否可以使用批处理文件,如果这没有意义,请道歉。
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建议的,如果您需要从当前地址开始,请将增量移到调用语句后面。
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
)
)