Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - bat читает из лог файла

Ответить
Настройки темы
CMD/BAT - bat читает из лог файла

Аватара для root221

Старожил


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

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


Изменения
Автор: root221
Дата: 05-02-2012
В общем сразу к теме.

Есть лог файл, я назвал его так config.log.

Выглядит он так

Код: Выделить весь код
IP Машины     Мак адрес

127.0.0.1     001234567891
127.0.0.10    001234567892
127.0.0.100    001234567893
Надо переделать скрипт так, что бы он брал всё из лог файла, а не из самого скрипта.


Сейчас это находится у меня в самом скрипте.
и выполняется так

Код: Выделить весь код
SetLocal
Rem _Number=Parameters
Set _1=001234567891
Set _10=001234567892
Set _100=001234567893

Set /P "i=      num: "
If Defined _%i% (Call program.exe "%%_%i%%%" > nul
нужно то же самое, только что бы № и МАК брались из лог файла.

И в дальнейшем что бы я вводил например 100 и что бы Мак-Address менялся на тот, который присвоен к компьютеру ( 127.0.0.100 [001234567893] ) который как я уже говорил ранее, в списке моего лог файла.

Отправлено: 17:35, 03-02-2012

 

Старожил


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

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


Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
Set DataFile=config.log
Call :Read
:WaitUserCommands
Set Number=
Echo.
Echo   Введите номер компьютера:
Echo   (0 - для показа всех пунктов)
Set /P Number=  ^>^>
If "%Number%"=="" (Cls&Echo   Вы ничего не ввели&GoTo WaitUserCommands)
If %Number%==0 (Call :Display&GoTo WaitUserCommands)
If Not %Number% GTR %i% (Call program.exe !MAC%Number%!) Else (Cls&Echo   Неправильный номер&GoTo WaitUserCommands)
Exit


:Display
Echo.
For /L %%C In (1,1,%i%) Do (Echo [%%C]  !IP%%C!  !MAC%%C!)
Pause
Cls
GoTo :EOF

:Read
Set i=0
For /F "tokens=1,2 skip=1 usebackq" %%A In ("%DataFile%") Do (Set /A i+=1&Set IP!i!=%%A&Set MAC!i!=%%B)
GoTo :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:57, 04-02-2012 | #2



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

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


Ветеран


Contributor


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

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


Если в файле config.log первые две строки не значащие, то
Код: Выделить весь код
@Echo Off
cls

:Begin

Set i=
Set /P "i=      номер компьютера: "

If "%i%"=="" GoTo :Eof

FOR /F "skip=2 tokens=4,5 delims=. " %%a IN (config.log) DO (
   If %%a EQU %i% (
      Echo Call Ваш.exe %%a  %%b
      GoTo :Begin
   )
)
Echo Номер компьютера =%i% не содержится в файле
pause
GoTo :Begin

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:12, 04-02-2012 | #3


Аватара для root221

Старожил


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

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


Ни один и ни другой не может правильно определить номер компьютера...

например:

набираю 26 он мне находит компьютер, только уже с мак адресом 23-го а не 26 как было написано в запросе..

Последний раз редактировалось root221, 05-02-2012 в 18:59.


Отправлено: 18:19, 04-02-2012 | #4


Ветеран


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

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


root221,

Без проверки правильности введенного значения:
Код: Выделить весь код
@echo off
setlocal

set /p num="Enter number: "

for /f "tokens=2" %%i in (' findstr "127\.[0-9]*\.[0-9]*\.%num%" config.log' ) do (

    echo %%i

)
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:49, 04-02-2012 | #5


Старожил


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

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


root221, что в моём варианте у вас не работает?
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:59, 04-02-2012 | #6


Аватара для root221

Старожил


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

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


Anonymоus, в вашем варианте почему то когда вводишь 10 компьютер, меняется на 16 а не на 10 (((
megaloman, Спасибо ещё раз, воспользовался вашим вариантом, т.к он мне подошел.

Foreigner, Вашь вариант, чёто затупил, когда ввёл не существующий компьютер из списка и начал перебирать всё подрят.

Пачка вариантов не плохая. Доволен....

Спасибо всем кто принимал участие.

Последний раз редактировалось root221, 05-02-2012 в 02:07.


Отправлено: 01:20, 05-02-2012 | #7


Ветеран


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

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


Цитата root221:
Вашь вариант, чёто затупил, когда ввёл не существующий компьютер из списка и начал перебирать всё подрят. »
Он просто не найдет нужную строку в логе, "затупить" он может только при nul-значении (когда ничего не ввел и нажал ввод).

Отправлено: 08:01, 05-02-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - bat читает из лог файла

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Запись в файл hosts с помощью bat-файла SibAgent Скриптовые языки администрирования Windows 20 29-07-2015 22:12
CMD/BAT - [решено] Запуск bat-файла от имени админа.Как сделать каталог этого bat-файла текущим?? axmed0207 Скриптовые языки администрирования Windows 1 19-01-2012 06:14
CMD/BAT - [решено] как из bat файла дописать символ в текстовый файл? idzs Скриптовые языки администрирования Windows 6 22-02-2011 03:49
CMD/BAT - [решено] Не выполняет одно условие удаления файла VoodooHaker Скриптовые языки администрирования Windows 7 14-02-2009 17:49
[решено] как добавить путь к текущей директории в reg файл из bat файла ? mitiya Автоматическая установка приложений 7 27-03-2008 16:12




 
Переход