如何使用批处理文件

时间:2017-06-02 11:24:15

标签: windows 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

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

2 个答案:

答案 0 :(得分: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建议的那样,如果你需要从当前地址开始,请在调用语句后面移动增量。

答案 1 :(得分: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 
  )
)