标题: [文本处理] [已解决]为什么批处理ping主机都在线的情况下也会输出error文件 [打印本页]
作者: yakeyun 时间: 2021-7-5 11:15 标题: [已解决]为什么批处理ping主机都在线的情况下也会输出error文件
脚本功能:获取同目录下data.txt列表里面的主机名称,然后循环ping判断在线情况,如果ping不同就生成并输出错误文档error.ini。可以ping通,就删除error.ini文档,同时结束music.exe音乐播放程序。- @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
复制代码
作者: yakeyun 时间: 2021-7-5 12:14
本帖最后由 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
作者: idwma 时间: 2021-7-5 13:36
>>error.ini 少一个尖括号?
作者: yakeyun 时间: 2021-7-5 13:47
自己摸索了一下,已经解决。
@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
作者: yakeyun 时间: 2021-7-5 13:51
本帖最后由 yakeyun 于 2021-7-5 14:11 编辑
回复 3# idwma
是的,是这个地方漏了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |