Войти

Показать полную графическую версию : запись ping в файл команда в одну строку...


White-Lion
07-02-2013, 18:31
Всем добрый день,

есть команда


for /l %i in (0,0,1) do @cmd /c "echo.|set/p=%TIME:~0,8^%" >> c:\pin.txt & ping -n 1 google.ru | findstr "Превышен Ответ" >> c:\pin.txt & ping -n 2 localhost > nul

Команда записывает в файл время а потом в файл дописываются только строки если пинг нормальный(показатели 1 пакета), и если пинг превышено время ответа.


Если эту строку copy\past в окно cmd, то все работает нормально, файл лог пинга пишется нормально, окно cmd не закрывается, только в шапке окна меняются выполняемые команды..... Но файл пишется нечитабельной кодировке.


18:25:15 ЏаҐўлиҐ* Ё*вҐаў*« ®¦Ё¤**Ёп ¤«п §*Їа®б*.

18:25:20 ЏаҐўлиҐ* Ё*вҐаў*« ®¦Ё¤**Ёп ¤«п §*Їа®б*.

18:25:26 ЏаҐўлиҐ* Ё*вҐаў*« ®¦Ё¤**Ёп ¤«п §*Їа®б*.

18:25:31 ЏаҐўлиҐ* Ё*вҐаў*« ®¦Ё¤**Ёп ¤«п §*Їа®б*.

18:25:49 ЋвўҐв ®в google.ru: зЁб«® Ў*©в=32 ўаҐ¬п=58¬б TTL=125

18:25:51 ЋвўҐв ®в google.ru: зЁб«® Ў*©в=32 ўаҐ¬п=57¬б TTL=125

18:25:52 ЋвўҐв ®в google.ru: зЁб«® Ў*©в=32 ўаҐ¬п=57¬б TTL=125

18:25:53 ЋвўҐв ®в google.ru: зЁб«® Ў*©в=32 ўаҐ¬п=57¬б TTL=125

18:25:54 ЋвўҐв ®в google.ru: зЁб«® Ў*©в=32 ўаҐ¬п=58¬б TTL=125

18:25:55 ЋвўҐв ®в google.ru: зЁб«® Ў*©в=32 ўаҐ¬п=57¬б TTL=125


Если сохранить это в *.bat. то при запуске bat файла, окно cmd открывается и сразу закрывается, файл лога пустой.

Пытался прикрутить сюда ключик /K, никаких изменений.
Также пытался прикрутить chcp 866 в окне мелькает надпись "Текущая кодовая страница: 866" а в файле все равно не читабельно.....

Помогите пожалуйста сделать читабельным лог, и чтобы окно не закрывалось, кто чем может :).....

Iska
07-02-2013, 19:55
White-Lion, используйте для открытия файла приложение, понимающее OEM/866, например Notepad++. Я пользуюсь Far Manager'ом.

gora
07-02-2013, 21:25
чтобы окно не закрывалось »
Переменная цикла в батнике должна быть с двумя знаками процента:
for /l %%i in (0,0,1) do echo.|set/p=%TIME:~0,8% >> c:\pin.txt & ping -n 1 google.ru | findstr "Превышен Ответ" >> c:\pin.txt & ping -n 2 localhost > nul

White-Lion
08-02-2013, 09:46
Переменная цикла в батнике должна быть с двумя знаками процента: »
прописал....

Все осталось на прежнем месте. :(

Dragokas
21-02-2013, 14:42
Попробуйте так:

@echo off
SetLocal EnableDelayedExpansion
set FileOut=c:\pin.txt
if exist "%FileOut%" del /f "%FileOut%"

:begin
chcp 866> nul
for /f "delims=" %%a in ('ping -n 1 google.ru ^|findstr "Превышен Ответ"') do (
chcp 1251> nul
set /p=!TIME:~0,8! >> "%FileOut%" <nul
call :convert "%%a" 2>NUL
ping 127.1 -n 2 >nul
)
goto :begin

:convert
echo.%~1>>"%FileOut%"

или однострочный через Unicode:
@cmd /Q /V:ON /C "for /L %%a in (0,0,0) do set/p=!TIME:~0,8! >c:\t.txt <nul& ping -n 1 google.ru| findstr "Превышен Ответ">>c:\t.txt& CMD /U /C type c:\t.txt>> c:\pin.txt"
сохранять в кодировка OEM-866.
P.S. Подправил код с динамическим изменением времени.

Smer4
05-04-2015, 18:10
@cmd /Q /V:ON /C "for /L %%a in (0,0,0) do set/p=!TIME:~0,8! >c:\t.txt <nul& ping -n 1 google.ru| findstr "Превышен Ответ">>c:\t.txt& CMD /U /C type c:\t.txt>> c:\pin.txt"



Ребят при запуске batника вот такую ошибку получаю. Как при запуске от администратора через райт клик, так и просто по дабл клику. В свойствах файла выставить галку " запускать от имени администратора " невозможно.

Задача у меня схожая с автором темы
запись команды ping в файл с указанием времени ( для определения временных границ когда интернет обрывается ) .

Georgio
05-04-2015, 21:44
@>"C:\pin.txt" (
for /l %%i in () do @>nul chcp 866& ping -n 1 google.ru| findstr/i "Превышен Ответ"|(
for /f "delims=" %%j in ('more') do @>nul chcp 1251& cmd/v/c "echo.!time:~0^,8! %%j")
) или @>"C:\pin.txt" (for /l %%i in () do @>nul chcp 866& ping -n 1 google.ru| findstr/i "Превышен Ответ"| for /f "delims=" %%j in ('more') do @>nul chcp 1251& cmd/v/c "echo.!time:~0^,8! %%j") (в одну строку).

Пакетный файл сохранить в кодировке "OEM-866" и запускать от имени администратора.

Georgio
06-04-2015, 12:03
Из личного сообщения: Всё та же ошибка в окне cmd . 2 вариант в 1 строку , при первом варианте открывается пустое окно cmd файл pin.txt создается, но он тоже пустой..


Smer4, теперь всё понятно: дело не в кодах.

Нельзя называть пакетные файлы именами, совпадающими с какими-либо командами.

Переименуйте Ваш пакетный файл "ping.bat" (или "ping.cmd"), например, в "пинг.bat" (или "пинг.cmd") и, как говорится, будет Вам счастье.




© OSzone.net 2001-2012