Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 12

"tokens=*" "съедает" одну строчку при обработке вывода результата выполнения команды ping :)

22.12.2011, 00:02. Показов 5921. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, нашел батничек для пинга узла и вывода инфо в файл, кое что подправил под себя, но остался вопрос такого плана:
Если просто делать пинг, ты выходит вот такое:
C:\Users\Александр>ping ya.ru -n 4 -l 500

Обмен пакетами с ya.ru [213.180.204.3] с 500 байтами данных:
Ответ от 213.180.204.3: число байт=500 время=33мс TTL=56
Ответ от 213.180.204.3: число байт=500 время=30мс TTL=56
Ответ от 213.180.204.3: число байт=500 время=29мс TTL=56
Ответ от 213.180.204.3: число байт=500 время=29мс TTL=56

Статистика Ping для 213.180.204.3:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 29мсек, Максимальное = 33 мсек, Среднее = 30 мсек


в файле содержится строка: for /f "tokens=*" %%a in (log2\temp_connection_%date%.txt) do call :convert %%a
goto :eof
:convert

после чего все это добро выводит вот так:
Обмен пакетами с ya.ru [213.180.204.3] с 500 байтами данных:
Ответ от 213.180.204.3: число байт=500 время=55мс TTL=56
Ответ от 213.180.204.3: число байт=500 время=33мс TTL=56
Ответ от 213.180.204.3: число байт=500 время=45мс TTL=56
Ответ от 213.180.204.3: число байт=500 время=33мс TTL=56
Статистика Ping для 213.180.204.3:
(0 потерь)

Приблизительное время приема-передачи в мс:
Минимальное = 33мсек, Максимальное = 55 мсек, Среднее = 41 мсек


Не совсем понимаю почему съедается одна строка? Поясните пожалуйста

код
ping ya.ru -n 4 -l 500 >> log2\temp_%date%.txt
for /f "tokens=*" %%a in (log2\temp_%date%.txt) do call :convert %%a
goto :eof
:convert
chcp 1251 >nul
echo %*>>log2\test_connection_%date%.txt
chcp 866 >nul
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.12.2011, 00:02
Ответы с готовыми решениями:

Запись вывода результата выполнения команды ping в текстовый файл в нужной кодировке
Собственно для запоминания результата пинга в тхт использую следующюю команду: ping google.com > *.txt (например) и вместо текста я в...

Запись вывода результата выполнения команды в определённое место в файле
Добрый день! Помогите с решением проблемы: Есть файл с настройками программы file1.txt. Строго в определенное место нужно подставлять...

Автоматическая подстановка вывода результата выполнения одной команды в другую
Доброго времени суток! Совсем недавно начал работать под Windows, поэтому прошу сильно не пинать если вопрос вдруг откровенно глупый. ...

12
 Аватар для Ris
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
22.12.2011, 00:28
А скажи тебе надо в проблеме разобраться, или задачу какую-то выполнить?
А то этот код лажовый можно норм написать.

Добавлено через 2 минуты
мне выдает такое
файл temp_22.12.2011.txt:
ЋЎ¬Ґ* Ї*ЄҐв*¬Ё б ya.ru [93.158.134.3] Ї® 500 Ў*©в:



ЋвўҐв ®в 93.158.134.3: зЁб«® Ў*©в=500 ўаҐ¬п=35¬б TTL=54

ЋвўҐв ®в 93.158.134.3: зЁб«® Ў*©в=500 ўаҐ¬п=35¬б TTL=54

ЋвўҐв ®в 93.158.134.3: зЁб«® Ў*©в=500 ўаҐ¬п=35¬б TTL=54

ЋвўҐв ®в 93.158.134.3: зЁб«® Ў*©в=500 ўаҐ¬п=35¬б TTL=54



‘в*вЁбвЁЄ* Ping ¤«п 93.158.134.3:

Џ*ЄҐв®ў: ®вЇа*ў«Ґ*® = 4, Ї®«гзҐ*® = 4, Ї®вҐап*® = 0 (0% Ї®вҐам),

ЏаЁЎ«Ё§ЁвҐ«м*®Ґ ўаҐ¬п ЇаЁҐ¬*-ЇҐаҐ¤*зЁ ў ¬б:

ЊЁ*Ё¬*«м*®Ґ = 35¬бҐЄ, Њ*ЄбЁ¬*«м*®Ґ = 35 ¬бҐЄ, ‘।*ҐҐ = 35 ¬бҐЄ
файл test_connection_22.12.2011.txt:
Режим вывода команд на экран (ECHO) включен.
Обмен пакетами с ya.ru [93.158.134.3] по 500 байт:
Режим вывода команд на экран (ECHO) включен.
Ответ от 93.158.134.3: число байт=500 время=35мс TTL=54
Ответ от 93.158.134.3: число байт=500 время=35мс TTL=54
Ответ от 93.158.134.3: число байт=500 время=35мс TTL=54
Ответ от 93.158.134.3: число байт=500 время=35мс TTL=54
Режим вывода команд на экран (ECHO) включен.
Статистика Ping для 93.158.134.3:
Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0 потерь),
Приблизительное время приема-передачи в мс:
Минимальное = 35мсек, Максимальное = 35 мсек, Среднее = 35 мсек
Добавлено через 7 минут
Bash
1
2
3
4
5
6
7
8
9
@echo off
for /f "tokens=*" %%a in ('ping ya.ru -n 4 -l 500') do (call :convert "%%a")
exit
:convert
if ""==%1 exit /b
chcp 1251>nul
echo %~1>>test_connection_%date%.txt
chcp 866>nul 
exit /b
Работает?
Bash
1
2
3
4
5
6
7
8
@echo off
for /f "tokens=*" %%a in ('ping ya.ru -n 4 -l 500') do (call :convert "%%a")
exit
:convert
chcp 1251>nul
if ""==%1 (echo. >>test_connection_%date%.txt) else echo %~1>>test_connection_%date%.txt
chcp 866>nul 
exit /b
1
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
22.12.2011, 00:58
Что то я подумал вы про пустые строки, а вы про строчку с пакетами.
Сейчас проверю.

Добавлено через 7 минут
for работает четко.
Возможно у вас функция обработки знак % или скобки не может обработать корректно.
Нужен ваш код.

Добавлено через 3 минуты
также возможно следует переделать вызов функции
call :convert "%%a"

PS вообще почти все символы батник может обработать если они в кавычках.
Проблемы возникают когда в тексте попадаются знаки % и сами кавычки ".
1
 Аватар для Ris
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
22.12.2011, 01:34
В этой строчке есть запятые и скобки, и их нет в других строчках.

Но самое главное в том что у меня его код ничего не проглатывал.
Выводил все строки.
1
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 12
22.12.2011, 08:58  [ТС]
Спасибо, ребят, за ответы!
Ris, ну вообще я делаю это себе для определенной задачи Но и, разумеется, хотелось бы разобраться.. До этого никогда батники не писал, просто не сталкивался с этим
Подскажите, что мне почитать по этой теме? Хелп читал в смд) немного прояснилось в голове но еще остаются вопросы.

В общем суть такова - хочу делать пинг и трасерт нескольких сайтов определенных, с занесением этого в .тхт файл. Было бы все просто - написать в батнике команды эти, но т.к. кодировка МС-ДОС - в получившемся файле получаю кракозябры. Собственно код этот нашел - там содержится конвертация кодировки, но при разборе съедается одна строка Пакетов: отправлено = 4, получено = 4, потеряно = 0, пустые строки и значок процента...

Я же хочу видеть в получившемся файле пинги и трасерты стандартного вида
0
 Аватар для Ris
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
22.12.2011, 13:28
Почитать можно:
FAQ по файлам BAT/CMD
BAT/CMD файлы
И вообще, всю ветку форума.
Почитайте файл C:\WINDOWS\Help\ntcmds.chm

Добавлено через 24 минуты
Кто батя, я батя. DD
Bash
1
2
3
4
5
6
7
8
9
10
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('ping ya.ru -n 4 -l 500') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
goto :eof
:convert
chcp 1251 >nul
if ""==%1 (echo. >>test_connection_%date%.txt&exit /b)
echo %~1>>test_connection_%date%.txt
chcp 866 >nul
exit /b
1
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 12
23.12.2011, 22:56  [ТС]
Ris, спасибо! то, что хотел)
только если не сложно, разъясни строчки кода 2,3,4,7,8?
самое главное - 3 строчка)))

з.ы. вопрос такого плана (мне кажется из области фантастики :-D) - возможно ли из полученного файла определенные значения пингов заносить в экселевские ячейки, например?
1
 Аватар для Ris
795 / 177 / 9
Регистрация: 11.01.2011
Сообщений: 543
24.12.2011, 00:21
определенные значения пингов
что именно тебе нужно, сколько мсек?

Если ты про добавленное мной команды SET, почитай мою статейку Литература, учебники, пособия по CMD/BAT, список команд Замена подстроки из строки на другую подстроку
1
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 12
24.12.2011, 00:48  [ТС]
что именно тебе нужно, сколько мсек?
эээм, не так выразился) Хочу средние значения пинга для каждого хоста переносить в экселевский файл) Это возможно при помощи батника?

Кстати твоим кодом почему то через раз пишет строку "Пакетов: отправлено = 100, получено = 99, потеряно = "

Одну строку да съедает... че-то щас голова кипит. сообразить не могу)
Код таков. результат в приложенном файле
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@echo off
mkdir log
chcp 866 >nul
echo %date% %time% > log\test_connection_%date%.txt
setlocal enabledelayedexpansion
echo ping odnokalssniki.ru
for /f "tokens=*" %%a in ('ping odnoklassniki.ru -n 100 -l 500') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
echo ping vkontakte.ru 
for /f "tokens=*" %%a in ('ping vkontakte.ru -n 100 -l 500') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
echo ping rbc.ru 
for /f "tokens=*" %%a in ('ping rbc.ru -n 100 -l 500') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
echo ping kaspersky.com 
for /f "tokens=*" %%a in ('ping kaspersky.com -n 100 -l 500') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
echo ping microsoft.com 
for /f "tokens=*" %%a in ('ping microsoft.com -n 100 -l 500') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
 
echo tracert odnokalssniki.ru
for /f "tokens=*" %%a in ('tracert odnoklassniki.ru') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
echo tracert vkontakte.ru
for /f "tokens=*" %%a in ('tracert vkontakte.ru') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
echo tracert rbc.ru
for /f "tokens=*" %%a in ('tracert rbc.ru') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
echo tracert kaspersky.com
for /f "tokens=*" %%a in ('tracert kaspersky.com') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
echo tracert microsoft.com
for /f "tokens=*" %%a in ('tracert microsoft.com') do (set str="%%a"&set str=!str:%%=%%%%!&call :convert !str!)
 
goto :eof
:convert
chcp 1251 >nul
if ""==%1 (echo. >> log\test_connection_%date%.txt&exit /b)
echo %~1>> log\test_connection_%date%.txt
chcp 866 >nul
If Exist log\temp_connection_%date%.txt del log\temp_connection_%date%.txt
exit /b
Вложения
Тип файла: zip test_connection_24.12.2011.zip (2.5 Кб, 31 просмотров)
0
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 12
26.12.2011, 23:35  [ТС]
сейчас попробовал на ХР (до этого пробовал на 7ке) - на ней все как положено отрабатывает. Со всеми пустыми строками
на 7ке же - пустые строки вообще игнорируются, и строка с количеством отправленых-полученных-потерянных пакетов - в некоторых пингах отсутствует...
0
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 12
04.01.2012, 22:14  [ТС]
никто не подскажет почему вин7 и винХР по разному выводят пинги в текстовичок? почему вин7 съедает строку
Code
1
2
Приблизительное время приема-передачи в мс:
Минимальное = 35мсек, Максимальное = 35 мсек, Среднее = 35 мсек
0
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
06.01.2012, 18:23
Все команды командной строки постоянно совершенствуются, поэтому нет ни чего удивительного в том, что вывод команд меняется. Более того, он разный для одних и тех же версий Виндовс, но с разными региональными настройками. Поэтому привязываться к выводу команд в Windows не стоит.
Если же необходимо чтобы всё работало везде, то стоит смотреть в сторону скриптов на JavaScript и VBScript или использовать сторонние утилиты, которые придётся таскать вместе с батниками.
1
1 / 1 / 0
Регистрация: 21.12.2011
Сообщений: 12
09.01.2012, 22:32  [ТС]
gimntut, спасибо за обстоятельный ответ конечно, жалко, что так происходит. Я наивно полагал что командная строка, по-крайней мере, со времен Вин ХР не претерпела никаких изменений. Ну что ж, буду читать букварь, искать решение своей проблемы

Всем большое СПАСИБО за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2012, 22:32
Помогаю со студенческими работами здесь

Ошибка при обработке в цикле с FOR вывода команды PATH
Мне кажется что здесь есть ошибка , нужно вывести на экран список не существующих путей. Оно выводить не правильно, не могу ...

Исключить пользователей домена при обработке вывода команды NET LOCALGROUP в цикле с FOR
Всем привет. Чтобы выполнить автоматизацию с пользователями, которые находится в локальных группах написал вот это. for /F %i in...

Кодировка при выводе результата выполнения команды в текстовый файл
растолкуйте как вывести данные из cmd в текстовый файл в нормальной кодировке. если делать просто: d:\>ipconfig>info.txt то в...

Иероглифы при записи в файл результата выполнения команды system
Собственно проблема возникает при наличии русских букв в результате выполнения команды system("echo 'Привет' > text.txt")....

Как использовать оператор IF при сравнении числового результата выполнения команды с заданным числом?
Допустим решил узнать сколько папок на D:\ dir D:\ /b | find /C /V "" Отлично их 10 Решил немного поиграться с параметром,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru