2017-06-02 82 views
1

我有2所問題陳述如何IP地址轉換爲使用批處理文件

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地址作爲輸入到另一批腳本,並通過1 increament該IP地址 實施例:

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

首先我們在4個標記,分爲ip地址。然後處理第四個。 set/a suffix=1%%d-1000避免低於100的數字(即080)被視爲八進制

編輯:如TripeHound建議,如果您需要從當前地址開始,請將移動增量移到調用語句後面。

+0

+1這可能會做的OP想要的東西(可能是移動電話後增量),但會產生無效的IP地址如果開始是'xxx155'或更高(需要額外的邏輯來包裝在255或遞增下一個組件)。 – TripeHound

+0

@TripeHound,是的。但如果OP知道如何從文件中讀取,那麼肯定知道如何處理任何需求。另外,恕我直言,改變網絡類可能它不是打算。 – elzooilogico

+0

這不是一個批評,我只是覺得值得指出的是,比如說'192.168.1.192',那麼它會循環到'192.168.1.256'及更遠的地方(如果它是作爲OP的練習的話對他們很重要)。 – 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 
) 
) 
相關問題