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

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

dark-------13 20-01-2015 09:26 2458676

Как использовать скрипты ping ip и скрипт ( convert 866 to 1251 ) в одном бат(е)
 
Здравствуйте,
Есть скрипт который пингует сетевые адреса, которые берет из текстового файла 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


Iska 20-01-2015 10:31 2458702

Цитата:

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

Решать надо существующую проблему, а не создавать самому себе новые.

dark-------13 20-01-2015 10:44 2458709

Цитата:

Цитата Iska
Решать надо существующую проблему, а не создавать самому себе новые. »

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

dark-------13 20-01-2015 12:21 2458760

Наконец разобрался - улучшено 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



Время: 14:17.

Время: 14:17.
© OSzone.net 2001-