找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24787|回复: 4

[文本处理] [已解决]为什么批处理ping主机都在线的情况下也会输出error文件

[复制链接]
发表于 2021-7-5 11:15:55 | 显示全部楼层 |阅读模式
脚本功能:获取同目录下data.txt列表里面的主机名称,然后循环ping判断在线情况,如果ping不同就生成并输出错误文档error.ini。可以ping通,就删除error.ini文档,同时结束music.exe音乐播放程序。
  1. @echo off
  2. COLOR 0A
  3. Title 主机状态查询:by.SanLi
  4. mode con cols=45  lines=5
  5. :run
  6. IF EXIST ERROR.INI (del ERROR.INI)
  7. CLS
  8. ECHO.
  9. ECHO 正在查询主机在线情况,请稍等......
  10. ECHO.
  11. ::============== 主体代码:左侧是IP,中间是冒号,右边是名称,可以把IP对应的名称显示出来 ==============
  12. (for /f "tokens=1* delims=:" %%a in (data.txt) do ping -n 1 -w 80 %%a >nul 2>nul||echo.%%a)>"error.ini"
  13. ::==(for /f "tokens=1* delims=:" %%a in (data.txt) do ping -n 1 -w 80 %%a >nul 2>nul||echo.%%a:%%b)>"error.ini"==
  14. ::等待15秒继续执行
  15. IF EXIST ERROR.INI (START MUSIC.exe)
  16. IF NOT EXIST ERROR.INI (taskkill /F /IM MUSIC.exe)
  17. echo.
  18. echo 15秒后继续循环查询
  19. echo.
  20. @TIMEOUT /T 15
  21. goto run
复制代码
 楼主| 发表于 2021-7-5 12:14:18 | 显示全部楼层
本帖最后由 yakeyun 于 2021-7-5 12:24 编辑

改成这个样子后正常了,但是用计算机名ping不通,也不会加入到ERROR报错文档中

@echo off
COLOR 0A
Title 主机状态查询:by.SanLi
mode con cols=45  lines=5
:run
IF EXIST ERROR.INI (del ERROR.INI)
CLS
ECHO.
ECHO 正在查询主机在线情况,请稍等......
ECHO.
::============== 主体代码:左侧是IP,中间是冒号,右边是名称,可以把IP对应的名称显示出来 ==============
for /f "tokens=1 delims=" %%a in (data.txt) do ping -n 1 -w 80 %%a >nul 2>nul||echo %%a >error.ini
::==(for /f "tokens=1* delims=:" %%a in (data.txt) do ping -n 1 -w 80 %%a >nul 2>nul||echo.%%a:%%b)>"error.ini"==
::等待15秒继续执行
IF EXIST ERROR.INI (START MUSIC.exe)
IF NOT EXIST ERROR.INI (taskkill /F /IM MUSIC.exe)
echo.
echo 15秒后继续循环查询
echo.
@TIMEOUT /T 15
goto run
发表于 2021-7-5 13:36:51 | 显示全部楼层
>>error.ini 少一个尖括号?

评分

参与人数 1技术 +1 收起 理由
yakeyun + 1 技术不错,完美解决。

查看全部评分

 楼主| 发表于 2021-7-5 13:47:11 | 显示全部楼层
自己摸索了一下,已经解决。

@echo off
COLOR 0A
Title 主机状态查询:by.SanLi
mode con cols=45  lines=5
:run
IF EXIST ERROR.INI (del ERROR.INI)
CLS
ECHO.
ECHO 正在查询主机在线情况,请稍等......
ECHO.
::============== 主体代码:左侧是IP,中间是冒号,右边是名称,可以把IP对应的名称显示出来 ==============

for /f "tokens=1* delims=" %%a in (data.txt) do ping -n 1 -w 80 %%a >nul 2>nul&&ECHO %%a主机在线 ||echo %%a>>error.ini

::==(for /f "tokens=1* delims=:" %%a in (data.txt) do ping -n 1 -w 80 %%a >nul 2>nul||echo.%%a:%%b)>"error.ini"==
::等待15秒继续执行
IF EXIST ERROR.INI (START MUSIC.exe)
IF NOT EXIST ERROR.INI (taskkill /F /IM MUSIC.exe)
echo.
echo 15秒后继续循环查询
echo.
@TIMEOUT /T 15
goto run
 楼主| 发表于 2021-7-5 13:51:09 | 显示全部楼层
本帖最后由 yakeyun 于 2021-7-5 14:11 编辑

回复 3# idwma


是的,是这个地方漏了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 18:01 , Processed in 0.031424 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表