Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   запись ping в файл команда в одну строку... (http://forum.oszone.net/showthread.php?t=253426)

White-Lion 07-02-2013 18:31 2084717

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

есть команда

Код:


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 2084785

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

gora 07-02-2013 21:25 2084837

Цитата:

Цитата White-Lion
чтобы окно не закрывалось »

Переменная цикла в батнике должна быть с двумя знаками процента:
Код:

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 2085122

Цитата:

Цитата gora
Переменная цикла в батнике должна быть с двумя знаками процента: »

прописал....

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

Dragokas 21-02-2013 14:42 2095898

Попробуйте так:

Код:

@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 2492068

Вложений: 1
Код:

@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 2492125

Код:

@>"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 2492295

Из личного сообщения:
Цитата:

Цитата Smer4
Всё та же ошибка в окне cmd . 2 вариант в 1 строку , при первом варианте открывается пустое окно cmd файл pin.txt создается, но он тоже пустой.

.


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

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

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


Время: 03:25.

Время: 03:25.
© OSzone.net 2001-