我的代码非常自我解释:
@echo off
set /a n=0
:doitagain
set /a n+=1
echo Pinging : 10.0.0.%n%
ping 10.0.0.%n%
if %n% lss 255 goto doitagain
pause >nul
但它始终ping 10.0.0.1所以我想这里需要微小的调整......
答案 0 :(得分:1)
正如npocmaka在他的评论中所述,当您处理在循环内修改的变量时,您总是需要延迟扩展。第一步是在代码开头添加SETLOCAL EnableDelayedExpansion
somwhere。第二步是使用!varname!
而不是%varname%
来访问在循环内修改的变量。在你的情况下,它将是这样的:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
...
set /a n=!n!+1
echo Pinging : 10.0.0.!n!
ping 10.0.0.!n!
if !n! lss 255 goto doitagain
...