【问题标题】:Batch file :: if lss is not working properly批处理文件 :: 如果 lss 无法正常工作
【发布时间】:2016-01-26 18:22:18
【问题描述】:

我的代码几乎是不言自明的:

@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,所以我想这里需要做一些微小的调整......

【问题讨论】:

  • 如发布的那样有效。它是 if 条件还是 for 循环的一部分?
  • 你能不能用 if %n% lss 255( echo %n% >>log.txt goto doitagain) 来检查流程是如何进行的它跳到下一步
  • 那你需要delayed expansion
  • 或者只使用for /L 循环。 for /L %%N in (0,1,255) do ping 10.0.0.%%N -- 在控制台窗口中查看 for /? 了解更多信息。

标签: batch-file if-statement dos ping


【解决方案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
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2014-11-02
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多