2014-10-13 4 views
3

Я делаю командный файл (Microsoft .bat) и хотел бы знать, как я могу автоматически изменить эхо-интерфейс интерфейса при перемещении из символов X?Как переупорядочить интерфейс по количеству цифр/букв?

Как:

┌────────────┐ 
│Ping: 50ms | 
└────────────┘ 

┌────────────┐ 
│Ping: 1ms | 
└────────────┘ 

┌────────────┐ 
│Ping: 200ms | 
└────────────┘ 

, как я хочу:

┌────────────┐ 
│Ping: 50ms | 
└────────────┘  
┌────────────┐ 
│Ping: 1ms | 
└────────────┘ 
┌────────────┐ 
│Ping: 200ms | 
└────────────┘ 

Примечание 1: Число/письмо является случайным от одной цифры и 3 цифры.

Примечание 2: Персонажи находятся рядом, чтобы представить, как это будет выглядеть в конце, что я использую здесь символы шрифта терминала, которые они не передали, что желание.

Мой код:

@Echo Off 
Title Ping 
Color 1f 
mode con:lines=12 cols=39 
setlocal enableextensions disabledelayedexpansion 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
Set "IPServidor=104.16.22.33" 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
set "lowPing=9999" 
set "highPing=0" 


Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Calculando...  ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
Echo. 
Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Calculando...  ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
Echo. 
Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Calculando...  ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 


:doPing 

set "ping=" 

for /f "tokens=9" %%a in (' 
ping -n 2 "%IPServidor%" ^|find "ms," 
') do for /f "delims=m " %%b in ("%%a") do set "ping=%%~b" 

Cls 

if not defined ping (
Echo. 
Echo. 
Echo. 
Echo. 
Echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
echo ³ ¯ O servidor nÆo est  respodendo! ³ 
Echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
Echo. 
Echo. 
Echo. 
Echo. 
goto :doPing 
) 

Cls 

if %ping% gtr %highPing% set "highPing=%ping%" 
if %ping% lss %lowPing% set "lowPing=%ping%" 

Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Ping atual: %ping%ms ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
Echo. 
Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Ping m¡nimo: %lowPing%ms ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
Echo. 
Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Ping m ximo: %highPing%ms ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 

Goto :doPing 
+0

Вы говорите о Microsoft .bat файлах? – aioobe

+0

Да, и если возможно, было бы очень приятно, если вы поможете мне. –

+0

Покажите нам код, который генерирует вашу строку ('Ping: 200ms'), тогда мы можем вам помочь. – aphoria

ответ

4

Вы можете прямо выровнять свой номер пинг и он используется фиксированное количество пробелов.

Попробуйте это прямо перед отображением переменной %ping%.

SET ping= %ping% 
SET ping=%ping:~-3% 

В принципе, первая строка добавляет два пробела перед номером, а затем вторая строка принимает 3 справа большинство символов.

Таким образом, если значение %ping% является 1, вы получите это:

┌────────────┐ 
│Ping: 1ms | 
└────────────┘ 

Если значение %ping% является 99, вы получите это:

┌────────────┐ 
│Ping: 99ms | 
└────────────┘ 

И, если значение %ping% составляет 999, вы бы получили:

┌────────────┐ 
│Ping: 999ms | 
└────────────┘ 
+0

Спасибо, вы, ребята, невероятны! –

0

Благодаря помощи людей здесь, мне удалось выполнить свой код, и для этого я отправляю его ниже:

@Echo Off 
Title Ping 
Color 1f 
mode con:lines=12 cols=39 
setlocal enableextensions disabledelayedexpansion 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
Set "IPServidor=104.16.22.33" 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
set "lowPing=9999" 
set "highPing= 0" 


Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Calculando...  ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
Echo. 
Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Calculando...  ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
Echo. 
Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Calculando...  ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 


:doPing 

set "ping=" 

for /f "tokens=9" %%a in (' 
ping -n 2 "%IPServidor%" ^|find "ms," 
') do for /f "delims=m " %%b in ("%%a") do set "ping=%%~b" 

Cls 

if not defined ping (
Echo. 
Echo. 
Echo. 
Echo. 
Echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
echo ³ ¯ O servidor nÆo est  respodendo! ³ 
Echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
Echo. 
Echo. 
Echo. 
Echo. 
goto :doPing 
) 

Cls 

SET ping= %ping% 
SET ping=%ping:~-3% 
if %ping% gtr %highPing% set "highPing=%ping%" 
if %ping% lss %lowPing% set "lowPing=%ping%" 

Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Ping atual: %ping%ms ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
Echo. 
Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Ping m¡nimo: %lowPing%ms ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 
Echo. 
Echo  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 
Echo  ³ ¯ Ping m ximo: %highPing%ms ³ 
Echo  ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 

Goto :doPing 
Смежные вопросы