[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

脚本功能:获取同目录下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
复制代码

本帖最后由 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

TOP

>>error.ini 少一个尖括号?
1

评分人数

    • yakeyun: 技术不错,完美解决。技术 + 1

TOP

自己摸索了一下,已经解决。

@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

TOP

本帖最后由 yakeyun 于 2021-7-5 14:11 编辑

回复 3# idwma


是的,是这个地方漏了

TOP

返回列表