這是整個問題。我試圖讀取計算機上給定適配器的IP地址,將最後一位數字減1,然後將新IP地址添加爲路由。我到目前爲止已經成功地提取以下方式的IP地址:從文件中讀取一個數字並在批處理文件中遞減
netsh interface ip show config name=15| findstr "IP Adress" > C:\ip.txt
for /f "tokens=2 delims=:" %%F in (c:\ip.txt) do echo %%F > c:\ipstripped.txt
for /f "tokens=2 delims=1" %%F in (C:\ipstripped.txt) do echo 1%%F >c:\ipdigits.txt
這讓我有它的IP地址的文件,而且空格,並可能在該行的最後一個回車。然後我運行:
for /f "tokens=4 delims=." %%F in (C:\ipdigits.txt) do echo %%F >c:\lastdig.txt
這讓我有剛剛過去的數字中有一個文件,但也似乎有多餘的字符..在這一點上,當我嘗試運行:
for /f "delims=" %%f in (c:\lastdig.txt) DO Set count=%%f
echo %count%
(
set /a %count%-=1
echo %count%
)
echo %count%> C:\decdigit.txt
它失敗了,因爲我猜測,它正在從文件加載6和空白字符等,在這一點上它不能減少「計數」變量,因爲它不只是一個數值..我已經得到它只返回最初讀入的數字..或者它將返回「回聲消除」或各種其他的事情,這取決於我嘗試什麼..
我正在尋找的只是足夠的代碼來獲取加載和減少的數字,或者如果你可以想到一個更好的方式來提取和更改IP地址,而沒有我使用的所有步驟..這將工作以及..我也不是太熟悉上面列出的任何代碼,只是從其他答案中挑剔了它。所以也許我只是錯過了一些簡單的東西,因爲它們都沒有讓我感覺到很多東西。
+1註記OP:剛剛在這裏評論那名選項使用完整的連接名稱時,在這裏工作,如在'name =「局域網連接2」' – foxidrive
改變「end = %% D + 1」後,這工作得很好「end = %% D-1」 雖然我對這個版本的變量有點不太清楚比下面發佈的。據推測findtr命令會返回一條線,說明: 「IP地址xx.xx.xx.xx」 我不確定它只剝去地址的位置,也不知道爲什麼初始命令狀態標記爲3-6時分隔符=。似乎這會給IP地址xx作爲第一個結果,然後每個最後3個數字作爲下一個3 .. 無論如何,這個作品天氣我明白與否,所以謝謝你的時間。 – user2939377
@ user2939377 - 如果最後一位數字已經是0,會發生什麼情況?不應該「遞減」循環並將新值設置爲255?關於答案是如何工作的:我將令牌分隔符設置爲點和空格,因此令牌變爲「IP」,「Address:」,「part1」,「part2」,「part3」,「part4」。所以你想要第三至第六個標記。 – dbenham