批处理文件循环



我正在创建一个小批量文件,以自动化我们每天使用的一些网络故障排除命令。

我创建了一个简单的菜单,但当我尝试运行循环命令时,它会出错,无法完成循环。选项1(SURVEY(运行良好,但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

脚本有两个主要问题。

  1. 您使用错误的命令SET /P进行已知菜单项列表的用户输入。您应该使用CHOICE实用程序打开命令提示符窗口,键入choice /?,然后按ENTER键查看其用法信息

  2. 您尚未阅读FOR命令for /?的帮助信息,该命令专门说明To use the FOR command in a batch program, specify %%variable instead of %variable

因此,这里对提交的批处理文件中包含的所有内容进行了改进的重写:

%SystemRoot%System32choice.exe /C 1234
If ErrorLevel 4 GoTo :EOF
If ErrorLevel 3 GoTo MAP
If ErrorLevel 2 GoTo PINGER
:SURVEY
(   Echo 3 Point WiFi Survey... Please Wait... > CON
Echo =====================================================================================================
Echo 3 Point WiFi Survey Results
%SystemRoot%System32netsh.exe WLAN Show Networks BSSID
Echo 3 Point WiFi Survey Complete > CON
Echo =====================================================================================================
) >> "surveyresults.txt" 
GoTo MENU
:PINGER
(   Echo Pinging Devices on Subnet... Please Wait... > CON
Echo =====================================================================================================
Echo Device Pings
For /L %%G In (1,1,254) Do %SystemRoot%System32PING.EXE -a -n 1 192.168.1.%%G | %SystemRoot%System32find.exe /i "Reply"
Echo Pinging Complete > CON
Echo =====================================================================================================
) >> "surveyresults.txt" 
GoTo MENU

相关内容

  • 没有找到相关文章

最新更新