Batch file 批处理文件循环

Batch file 批处理文件循环,batch-file,Batch File,我正在创建一个小的批处理文件,以自动化我们每天使用的一些网络疑难解答命令 我创建了一个简单的菜单,但当我尝试运行循环命令时,它会出错,无法完成循环。选项1(测量)运行良好,但PINGER部分只是停止命令提示符,而不做任何操作 SET /P M=Type 1, 2, 3, or 4 then press ENTER: IF %M%==1 GOTO SURVEY IF %M%==2 GOTO PINGER IF %M%==3 GOTO MAP IF %M%==4 GOTO EOF :SURVEY

我正在创建一个小的批处理文件,以自动化我们每天使用的一些网络疑难解答命令

我创建了一个简单的菜单,但当我尝试运行循环命令时,它会出错,无法完成循环。选项1(测量)运行良好,但PINGER部分只是停止命令提示符,而不做任何操作

SET /P M=Type 1, 2, 3, or 4 then press ENTER:
IF %M%==1 GOTO SURVEY
IF %M%==2 GOTO PINGER
IF %M%==3 GOTO MAP
IF %M%==4 GOTO EOF

:SURVEY
echo 3 Point WiFi Survey... Please Wait...
echo ===================================================================================================== >> surveyresults.txt
echo 3 Point WiFi Survey Results >> surveyresults.txt
netsh wlan show networks bssid >> surveyresults.txt
echo 3 Point WiFi Survey Complete
echo ===================================================================================================== >> surveyresults.txt 
GOTO MENU

:PINGER
echo Pinging Devices on Subnet... Please Wait...
echo ===================================================================================================== >> surveyresults.txt 
echo Device Pings >> surveyresults.txt
FOR /L %i IN (1,1,254) DO ping -a -n 1 192.168.1.%i | FIND /i "Reply" >> surveyresults.txt
echo Pinging Complete
echo ===================================================================================================== >> surveyresults.txt 
GOTO MENU

:EOF

您的脚本有两个主要问题

  • 用户输入已知菜单项列表时使用了错误的命令
    SET/p
    。您应该使用
    选项
    实用程序。打开命令提示窗口,键入
    choice/?
    ,然后按ENTER键查看其使用信息

  • 您尚未阅读
    for
    命令的帮助信息,
    for/?
    ,其中特别说明
    要在批处理程序中使用for命令,请指定%%variable而不是%variable

  • 因此,这里是对您提交的文件中包含的所有内容的改进重写:

    %SystemRoot%\System32\choice.exe/C 1234
    如果错误级别4转到:EOF
    如果错误级别3转到地图
    如果错误级别2转到PINGER
    :调查
    (Echo 3点WiFi调查…请稍候…>CON
    回音=====================================================================================================
    Echo 3点WiFi调查结果
    %SystemRoot%\System32\netsh.exe WLAN显示网络BSSID
    Echo 3点WiFi调查完成>CON
    回音=====================================================================================================
    )>>“surveyresults.txt”
    转到菜单
    :PINGER
    (回显子网上的ping设备…请稍候…>CON
    回音=====================================================================================================
    回声设备ping
    对于(1,1254)中的/L%%G,请执行%SystemRoot%\System32\PING.EXE-a-n 1 192.168.1.%%G |%SystemRoot%\System32\find.EXE/i“回复”
    回声ping完成>CON
    回音=====================================================================================================
    )>>“surveyresults.txt”
    转到菜单
    
    批处理文件要求将for循环元变量的
    %
    字符加倍转义
    %%i
    科林,你已经访问过了,并且在两个多小时前看到了我的答案!虽然你已经成为这个网站的成员足够长的时间了,作为一个复习者,请阅读以了解你可以选择的选项。不太确定你在那里谈论什么-我已经看到了我问题的答案。第二天-不是你建议的2小时前。我在你的个人资料Colin中查看了你最后一次看到的时间,这是34分钟前发布此帖子的时间,即2021-04-13@12:12:54Z。根据您上面的评论,即2021-04-13@12:14:35Z,这表明了数据的准确性。没有正当理由访问一个只有一个实时问题的站点,在那里您将清楚地看到您的问题已被回答的通知,而不是查看该答案。我对数据感到满意,数据表明您确实看到了我的答案,并且在两小时内没有提供任何反馈。感谢您将其标记为已接受。