Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как использовать скрипты ping ip и скрипт ( convert 866 to 1251 ) в одном бат(е)

Ответить
Настройки темы
CMD/BAT - Как использовать скрипты ping ip и скрипт ( convert 866 to 1251 ) в одном бат(е)

Старожил


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

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


Изменения
Автор: dark-------13
Дата: 25-01-2015
Описание: Убраны тире и нижние подчеркивания при записи данных в фалы
Здравствуйте,
Есть скрипт который пингует сетевые адреса, которые берет из текстового файла my.txt
После выполнения пинга рабочие IP записываются в документ log_speed_v.2.1.txt, а не рабочие в log_speed_bad.txt
Так как на моем компе проблемы с отображением кодировки 866 , было решено вывод конвертить в 1251, так и сделал, но есть проблемка.
Скрипты конвертации лежат в отдельных бат файлах и все работает, но хочется чтобы весь код был в одном бат файле, - подскажите пожалуйста как это сделать ?

Основной скрипт для пингования IP адресов - (лежит в отдельном bat файле)
Код: Выделить весь код
@echo off
set /a per=0
echo _____________________________________________________________ >log_speed_v.2.1.txt
date /t >>log_speed_v.2.1.txt
time /t >>log_speed_v.2.1.txt
date /t >log_speed_bad.txt
time /t >>log_speed_bad.txt
For /f "tokens=1,2,3 delims=," %%i in (my.txt) do (
set /a per=0
echo %%j >>log_speed_v.2.1.txt
ping %%i -n 1 | find "╬ЄтхЄ" >>log_speed_v.2.1.txt
ping %%i -n 1 | find "TTL=" >>log_speed_v.2.1.txt || if %per% == 0 ( 
echo %%j BaD
echo __________________ >>log_speed_bad.txt
echo %%i >>log_speed_bad.txt 
echo %%j >>log_speed_bad.txt
)  
echo %%k
echo ------------------------------------------------------------- >>log_speed_v.2.1.txt 
)
date /t >>log_speed_v.2.1.txt
time /t >>log_speed_v.2.1.txt 
echo _____________________________________________________________ >>log_speed_v.2.1.txt 
call "convert_ok.bat"
call "convert_bad.bat"
Код: Выделить весь код
@echo off
@echo. >res_ok.txt
for /F "delims=" %%a in (log_speed_v.2.1.txt) do call :convert %%a 
:convert
chcp 1251 >nul
echo. %* >>res_ok.txt
chcp 866 >nul
exit /b

Код: Выделить весь код
@echo off
@echo. >res_bad.txt
for /F "delims=" %%a in (log_speed_bad.txt) do call :convert %%a 
:convert
chcp 1251 >nul
echo. %* >>res_bad.txt 
chcp 866 >nul
exit /b

Отправлено: 09:26, 20-01-2015

 

Ветеран


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

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


Цитата dark-------13:
Так как на моем компе проблемы с отображением кодировки 866 , было решено вывод конвертить в 1251, »
Решать надо существующую проблему, а не создавать самому себе новые.

Отправлено: 10:31, 20-01-2015 | #2



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

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


Старожил


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

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


Цитата Iska:
Решать надо существующую проблему, а не создавать самому себе новые. »
Так , интересно вообще было разобраться с конвертацией.
В частности сейчас не получается сделать так, чтобы эти скрипты работали корректно в одном бат файле.
Если разместить код трех бат файлов в одном, то код выполняется неверно.
Как разделить выполнение кода на части - в одном файле ?

Отправлено: 10:44, 20-01-2015 | #3


Старожил


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

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


Наконец разобрался - улучшено 23.01.2015 ( Убраны тире и нижние подчеркивания - при записи данных в фалы )
Код: Выделить весь код
@echo off
SetLocal 
set /a per=0
@echo. >log_speed_v.2.1.txt
date /t >>log_speed_v.2.1.txt
time /t >>log_speed_v.2.1.txt
date /t >log_speed_bad.txt
time /t >>log_speed_bad.txt
For /f "tokens=1,2,3 delims=," %%i in (my.txt) do (
set /a per=0
@echo. %%j >>log_speed_v.2.1.txt
ping %%i -n 1 | find "Ответ" >>log_speed_v.2.1.txt
ping %%i -n 1 | find "TTL=" >>log_speed_v.2.1.txt || if %per% == 0 ( 
@echo. %%j BaD
@echo. >>log_speed_bad.txt
@echo. %%i >>log_speed_bad.txt 
@echo. %%j >>log_speed_bad.txt
)  
@echo. %%k
@echo. >>log_speed_v.2.1.txt 
)
date /t >>log_speed_v.2.1.txt
time /t >>log_speed_v.2.1.txt 
@echo. >>log_speed_v.2.1.txt 
EndLocal

@echo off
SetLocal 
echo. >res_ok.txt
Set a=0
for /F "delims=" %%a in (log_speed_v.2.1.txt) do call :convert %%a 
:convert
chcp 1251 >nul
@echo. %* >>res_ok.txt
chcp 866 >nul
EndLocal

@echo off
SetLocal
Set k=0
@echo. >res_bad.txt
for /F "delims=" %%k in (log_speed_bad.txt) do call :convert %%k 
:convert
chcp 1251 >nul
@echo. %* >>res_bad.txt 
chcp 866 >nul
EndLocal

Последний раз редактировалось dark-------13, 26-01-2015 в 08:17.


Отправлено: 12:21, 20-01-2015 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как использовать скрипты ping ip и скрипт ( convert 866 to 1251 ) в одном бат(е)

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Как сделать что-бы скрипт игнорировал не нужные ответы Ping root221 Скриптовые языки администрирования Windows 13 02-09-2012 22:28
Как бы перекодировать из 1251 в 866 garanov AutoIt 3 24-05-2012 12:09
CMD/BAT - [решено] Перекодировка файлов из 1251 в 866 AlexVong Скриптовые языки администрирования Windows 1 19-11-2011 11:44
866 или 1251 - какой должна быть кодировка командного файла? truvo Хочу все знать 2 27-10-2008 09:02
Перекодировка из 866 в 1251 Concord Вебмастеру 4 14-11-2003 17:32




 
Переход