批处理脚本优化需求:实现输入D/L追加后批量Ping设备
批量Ping台式机/笔记本脚本实现
以下是修改后的批处理脚本,实现控制台选择前缀(D/L)、自动追加到设备标签前执行Ping,并保留原日志输出功能:
@echo off Set "ComputerList=C:\computers.txt" Set "LogFile=C:\PingResults.txt" :: 检查设备列表文件是否存在 If Not Exist "%ComputerList%" ( echo 错误:设备列表文件 %ComputerList% 不存在! pause Exit /B ) :: 提示用户选择设备类型并验证输入 :prompt set "prefix=" set /p "prefix=请选择设备类型:输入D(台式机)或L(笔记本):" if /i "%prefix%"=="D" goto startPing if /i "%prefix%"=="L" goto startPing echo 输入无效,请输入D或L! goto prompt :startPing echo 正在执行Ping测试,请稍候... :: 清空日志文件并执行Ping测试,如需追加日志请将>&改为>> >"%LogFile%" ( For /F UseBackQ %%A In ("%ComputerList%" ) Do ( set "device=%prefix%%%A" Ping -n 1 !device! | Find "TTL=" >Nul && (Echo Yes [!device!]) || Echo No [!device!] ) ) echo Ping测试完成,结果已保存至 %LogFile% pause
关键改动说明:
- 输入验证模块:通过
:prompt标签循环提示用户输入,只有输入D/L(不区分大小写)才会进入Ping流程,避免无效输入导致错误。 - 前缀追加逻辑:将读取到的每个服务标签
%%A与用户选择的前缀%prefix%拼接为完整设备名!device!,使用延迟变量扩展(For循环内修改变量需用!代替%)。 - 体验优化:增加了文件不存在的友好提示,以及Ping完成后的状态反馈。
- 日志模式:原脚本为覆盖日志,若需要每次运行追加结果,可将
>"%LogFile%"改为>>"%LogFile%"。
内容的提问来源于stack exchange,提问作者Dwain Randolph
相关产品推荐
相关产品推荐

