这是整个问题。我试图读取计算机上给定适配器的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