带FOR循环的彩色cmd窗口

时间:2019-01-10 15:51:15

标签: batch-file

我正在尝试使用此代码使我的工作更轻松,但我有库存。 希望有人可以帮忙。

代码保存日期和时间,保存ping,但是当它进入for循环时,cmd会将我拒之门外。

@echo off 
:ping1
Title SAVES?
ECHO %date% - %time%
DATE /t > check_ping.txt
TIME /t >> check_ping.txt

ping -n 4 10.0.0.1

ping -n 4 10.0.0.1 >> check_ping.txt


for /f "Delims=Received ", %%a in (check_ping.txt) do (
  set TEST=%%a
)

if &TEST& > 2 goto correct
cls
color c7
echo WRONG

:correct  
cls
color 27
echo CORRECT
else

Pause 
goto ping1

我希望输出会根据ping的输出为屏幕着色。 如果我收到的信号多于2,它将使屏幕的颜色变为绿色;否则,它将使屏幕的颜色变为红色。

1 个答案:

答案 0 :(得分:0)

可能还有一些改进要做,但是您可以进行以下操作:

@echo off
:ping1
title SAVES?
echo %date% - %time%
date /t>check_ping.txt
time /t>>check_ping.txt
ping -n 4 10.0.0.1
ping -n 4 10.0.0.1>>check_ping.txt
for /f "tokens=6,7" %%a in (check_ping.txt) do (
    if "%%a"=="=" (
        if %%b GEQ 2, (
            cls
            color 27
            echo CORRECT
        ) else (
            cls
            color c7
            echo WRONG
        )
    )
)
pause
goto ping1

如果您只想ping一次而不是两次,则可以替换第7-8行(并删除第4行:echo %date% - %time%):

ping -n 4 10.0.0.1
ping -n 4 10.0.0.1>>check_ping.txt

像这样:

ping -n 4 10.0.0.1>>check_ping.txt
type check_ping.txt
ping -n 4 localhost>nul

这应该在3秒钟后立即显示全部ping(到ping的时间),只是要确保您要进行的两次ping是相同的,而不是2次不同(第一个可以平均80毫秒)并且附加到文件的位置可能是81ms。)
我还建议写一些类似ping -n 4 10.0.0.1的东西,而不要写ping -n 4 -l 1 10.0.0.1,其中-l 1是应该发送多少个字节ip以减少网络使用情况(如果您已经变慢的话)