Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нумерация строк в cmd

Ответить
Настройки темы
CMD/BAT - [решено] Нумерация строк в cmd

Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


Подскажите, можно ли сделать так, чтобы cmd автоматически нумеровал строки? Например, я задаю ping google.com -t и чтобы вместо стандартного:
Код: Выделить весь код
Обмен пакетами с google.com [74.125.39.104] с 32 байтами данных:
Ответ от 74.125.39.104: число байт=32 время=88мс TTL=54
Ответ от 74.125.39.104: число байт=32 время=75мс TTL=54
Ответ от 74.125.39.104: число байт=32 время=73мс TTL=54
Ответ от 74.125.39.104: число байт=32 время=74мс TTL=54
Выдавалось:
Код: Выделить весь код
Обмен пакетами с google.com [74.125.39.104] с 32 байтами данных:
1. Ответ от 74.125.39.104: число байт=32 время=88мс TTL=54
2. Ответ от 74.125.39.104: число байт=32 время=75мс TTL=54
3. Ответ от 74.125.39.104: число байт=32 время=73мс TTL=54
4. Ответ от 74.125.39.104: число байт=32 время=74мс TTL=54
Или для этого надо использовать какую-то альтернативную консоль сторонних производителей?

Отправлено: 12:31, 03-08-2011

 

Ветеран


Сообщения: 1239
Благодарности: 273

Профиль | Отправить PM | Цитировать


Цитата werov:
Подскажите, можно ли сделать так, чтобы cmd автоматически нумеровал строки? Например, я задаю ping google.com -t и чтобы вместо стандартного: »
У тебя очень странный пример. Почему это вывод строк, начинающихся с "Ответ от" нумеруется, а "Обмен пакетами ..." и первая пустая строка в выводе - нет?

Например, вариант:
Код: Выделить весь код
C:\>ping google.com | findstr /N ".*"
1:
2:Обмен пакетами с google.com [209.85.148.105] с 32 байтами данных:
3:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
4:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
5:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
6:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
7:
8:Статистика Ping для 209.85.148.105:
9:    Пакетов: отправлено = 4, получено = 4, потеряно = 0
10:    (0% потерь)
11:Приблизительное время приема-передачи в мс:
12:    Минимальное = 46мсек, Максимальное = 46 мсек, Среднее = 46 мсек
устроит?
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:22, 03-08-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Dzirt2005:
Например, вариант:
Код:
C:\>ping google.com | findstr /N ".*"
1:
2:Обмен пакетами с google.com [209.85.148.105] с 32 байтами данных:
3:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
4:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
5:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
6:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
7:
8:Статистика Ping для 209.85.148.105:
9: Пакетов: отправлено = 4, получено = 4, потеряно = 0
10: (0% потерь)
11:Приблизительное время приема-передачи в мс:
12: Минимальное = 46мсек, Максимальное = 46 мсек, Среднее = 46 мсек
устроит? »
ага, +/-несколько строк роли не сыграют, спасибо

P.S. Тогда еще маленький вопросец: можно ли увеличить чисто строк в cmd до числа большего чем 9999?

P.P.S. И раз уж такая канитель понеслась, то заодно хотелось бы узнать, можно ли вместо номера строки сделать примерно следующее:
Код: Выделить весь код
C:\>ping google.com | findstr /N ".*"
3.08.2011 13:47:21:
3.08.2011 13:47:22:Обмен пакетами с google.com [209.85.148.105] с 32 байтами данных:
3.08.2011 13:47:23:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
3.08.2011 13:47:24:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
3.08.2011 13:47:25:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
3.08.2011 13:47:26:Ответ от 209.85.148.105: число байт=32 время=46мс TTL=53
3.08.2011 13:47:27:
3.08.2011 13:47:28:Статистика Ping для 209.85.148.105:
3.08.2011 13:47:29: Пакетов: отправлено = 4, получено = 4, потеряно = 0
3.08.2011 13:47:30: (0% потерь)
3.08.2011 13:47:31:Приблизительное время приема-передачи в мс:
3.08.2011 13:47:32: Минимальное = 46мсек, Максимальное = 46 мсек, Среднее = 46 мсек

Последний раз редактировалось werov, 03-08-2011 в 13:48.


Отправлено: 13:30, 03-08-2011 | #3


Ветеран


Contributor


Сообщения: 1518
Благодарности: 849

Профиль | Отправить PM | Цитировать


Цитата werov:
можно ли вместо номера строки сделать примерно следующее »
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

for /f "tokens=*" %%i in ('ping google.com') do echo !date! !time!: %%i
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:40, 03-08-2011 | #4


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
можно ли вместо номера строки сделать примерно следующее »
Код:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('ping google.com') do echo !date! !time!: %%i »
ммм.. создать батник из этого я так понимаю?
Сделал батник, пробегает пинг и окошко закрывается, ничего не видно. Если делаю параметр -t после гугл.ком, тогда вообще на экране ничего не видно

сама суть сего действия такова, что иногда у меня отваливается один очень важный сайт, тех. поддержка постоянно пинает меня от одного отдела к другому, ссылаясь на то, что все у них работает. Вот и хочу поставить их сайт на пинг с параметром -t, чтобы круглосуточно шли постоянные пинги, а затем при очередном "падении" их сайта можно было предъявить точные доказательства того, в какое конкретно время сайт падал

Отправлено: 16:45, 03-08-2011 | #5


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off &setlocal enabledelayedexpansion
set "host=google.com"
:loop
for /f "tokens=*" %%i in ('ping -n 1 %host% ^|findstr "=" ^|^|ping -n 1 %host%') do (
echo !date! !time!: %%i>> "!date:/=-!.log"
echo !date! !time!: %%i
ping -n 59 localhost >nul
goto :loop
)

Последний раз редактировалось kiripanda, 03-08-2011 в 18:38.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:18, 03-08-2011 | #6


Ветеран


Contributor


Сообщения: 1518
Благодарности: 849

Профиль | Отправить PM | Цитировать


Цитата werov:
Сделал батник, пробегает пинг и окошко закрывается, ничего не видно »
Попробовал еще раз -- работает:
Цитата:
> 1
03.08.2011 19:17:56,33: Обмен пакетами с google.com [74.125.43.106] с 32 байтами данных:
03.08.2011 19:17:56,33: Ответ от 74.125.43.106: число байт=32 время=46мс TTL=55
03.08.2011 19:17:56,33: Ответ от 74.125.43.106: число байт=32 время=46мс TTL=55
03.08.2011 19:17:56,33: Ответ от 74.125.43.106: число байт=32 время=47мс TTL=55
03.08.2011 19:17:56,34: Ответ от 74.125.43.106: число байт=32 время=47мс TTL=54
03.08.2011 19:17:56,34: Статистика Ping для 74.125.43.106:
03.08.2011 19:17:56,34: Пакетов: отправлено = 4, получено = 4, потеряно = 0
03.08.2011 19:17:56,34: (0% потерь)
03.08.2011 19:17:56,34: Приблизительное время приема-передачи в мс:
03.08.2011 19:17:56,34: Минимальное = 46мсек, Максимальное = 47 мсек, Среднее = 46 мсек

>
Как запускали, я прямо из cmd, если мышью, то допишите pause в конце батника или перенаправляйте вывод батника в файл.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:25, 03-08-2011 | #7


Старожил


Сообщения: 408
Благодарности: 258

Профиль | Отправить PM | Цитировать


Вот мое решение, думаю, Вам подойдет. Скрипт периодически (с настраиваемым интервалом, по умолчанию - 15 сек) пингует выбранный хост, отображает статистику - сколько раз смог удачно пропинговать, сколько раз сайт был недоступен, и при любой смене статуса хоста записывает это событие в лог. В логе вы увидите примерно такое:
Код: Выделить весь код
Started at [04.08.2011 -  2:39:06]
04.08.2011 -  2:39:20 >> 127.0.0.1 is active

Started at [04.08.2011 -  2:39:46]
04.08.2011 -  2:40:01 >> google.ru is active
04.08.2011 -  2:40:43 >> google.ru is offline
04.08.2011 -  2:41:59 >> google.ru is active
Сам скрипт:
Код: Выделить весь код
@Echo Off
:: Anonymous, 2011
Cls
Title Ping2Host

:: Ведение лога
Set Logging=true
:: Таймаут в секундах
Set Timeout=15

Echo.
Set /P Host=  Enter IP or hostname: ^> 
Cls&Set Total=0&Set Succes=0&Set Fail=0&Set Status=Not checked yet&Set StartTime=[%date% - %time:~-0,8%]
Set /A Sleep=(Timeout-1)*1000
If %Logging%==true (Set LogFile="%~n0.log") Else (Set LogFile=nul)
Echo.>>%LogFile%&Echo Started at %StartTime%>>%LogFile%
:ShowStats
Call :Stats
.\bin\nc.exe wait %Sleep%
Ping -n 1 -w 1000 -l 1024 %Host%>nul
If %ErrorLevel% GTR 0 (
Set /A Fail+=1
If Not "%Status%"=="Offline" (Echo %date% - %time:~-0,8% ^>^> %Host% is offline>>%LogFile%)
Set Status=Offline
Title Offline [%Host%] - Ping2Host
) Else (
Set /A Succes+=1
If Not "%Status%"=="Online" (Echo %date% - %time:~-0,8% ^>^> %Host% is active>>%LogFile%)
Set Status=Online
Title Online [%Host%] - Ping2Host
)
GoTo ShowStats

:Stats
Cls
Echo.
Echo  Started at: %StartTime%
Echo.
Echo  Target: %Host%
Echo  Online: %Succes% times, Offline: %Fail% times
Echo  Current status: [%date% - %time:~-0,8%] - %Status%
Echo.
Exit /B
Для его правильной работы нужно скачать NirCmd (консольная версия), переименовать exe-файл в nc.exe, создать рядом со скриптом директорию bin и положить туда nc.exe.

Отправлено: 03:48, 04-08-2011 | #8


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата kiripanda:
@echo off &setlocal enabledelayedexpansion set "host=google.com" :loop for /f "tokens=*" %%i in ('ping -n 1 %host% ^|findstr "=" ^|^|ping -n 1 %host%') do ( echo !date! !time!: %%i>> "!date:/=-!.log" echo !date! !time!: %%i ping -n 59 localhost >nul goto :loop ) »
Создал бат-файл, запускаю, выдает одну строчки:
Код: Выделить весь код
04.08.2011  9:22:19,49: Ответ от 74.125.39.99: число байт=32 время=85мс TTL=54
04.08.2011  9:23:17,78: Ответ от 74.125.39.99: число байт=32 время=86мс TTL=54
04.08.2011  9:24:16,10: Ответ от 74.125.39.105: число байт=32 время=85мс TTL=54
Видно, что пинг идет раз в минуту. Что означает число после запятой не знаю, но догадываюсь, что это сотые доли секунды. Хотелось бы, чтобы пинги шли каждую секунду, как при стандартной команде ping. А так скрипт, как раз то что надо

Цитата Foreigner:
Как запускали, я прямо из cmd, если мышью, то допишите pause в конце батника или перенаправляйте вывод батника в файл. »
Из cmd напрямую:
Код: Выделить весь код
S:\>@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('ping google.com') do echo !date! !time!: %%i
Непредвиденное появление: %%i.
Из батника с командой pause в конце запустилось, но мне надо пинговать с параметром -t, а если его прописать, то ничего опять же не появляется

Отправлено: 10:13, 04-08-2011 | #9


Ветеран


Сообщения: 1239
Благодарности: 273

Профиль | Отправить PM | Цитировать


Цитата werov:
Из батника с командой pause в конце запустилось, но мне надо пинговать с параметром -t, а если его прописать, то ничего опять же не появляется »
Потому что for ждет окончания вывода. Вариант с внешней программой не устраивает? Например, с mtee :
Код: Выделить весь код
C:\>ping -t google.com | mtee /d /t
2011-08-04 09:53:02.606
2011-08-04 09:53:02.606 Обмен пакетами с google.com [209.85.148.105] с 32 байтами данных:
2011-08-04 09:53:02.637 Ответ от 209.85.148.105: число байт=32 время=44мс TTL=53
2011-08-04 09:53:03.637 Ответ от 209.85.148.105: число байт=32 время=44мс TTL=53
2011-08-04 09:53:04.637 Ответ от 209.85.148.105: число байт=32 время=44мс TTL=53
2011-08-04 09:53:05.637 Ответ от 209.85.148.105: число байт=32 время=44мс TTL=53
2011-08-04 09:53:06.638 Ответ от 209.85.148.105: число байт=32 время=44мс TTL=53
2011-08-04 09:53:07.638 Ответ от 209.85.148.105: число байт=32 время=44мс TTL=53
2011-08-04 09:53:08.069
2011-08-04 09:53:08.069 Статистика Ping для 209.85.148.105:
2011-08-04 09:53:08.069     Пакетов: отправлено = 6, получено = 6, потеряно = 0
2011-08-04 09:53:08.069     (0% потерь)
2011-08-04 09:53:08.070 ^Приблизительное время приема-передачи в мс:
C2011-08-04 09:53:08.070     Минимальное = 44мсек, Максимальное = 44 мсек, Среднее = 44 мсек
2011-08-04 09:53:08.070 Control-C

Отправлено: 10:55, 04-08-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нумерация строк в cmd

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Нумерация внутри строки ImRight AutoIt 2 13-03-2011 16:39
2010 - [решено] Нумерация страниц Kathandra Microsoft Office (Word, Excel, Outlook и т.д.) 7 30-09-2010 20:16
Установка - Нумерация жёстких дисков twinzzz75 Microsoft Windows 2000/XP 7 12-07-2010 16:09
2007 - Нумерация Streamnewal Microsoft Office (Word, Excel, Outlook и т.д.) 2 14-06-2010 20:58
Помогите пожалуйста не срабатывает команда из*cmd файла запускаемого из RanOnceEx.cmd vovchiku Автоматическая установка Windows 2000/XP/2003 6 25-09-2007 23:38




 
Переход