|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Сохранение параметра в файл и обратное действие |
|
|
CMD/BAT - Сохранение параметра в файл и обратное действие
|
Новый участник Сообщения: 20 |
Добрый вечер!
Есть вопрос, буду благодарен за любую помощь. Есть программа по смене MAC адреса, называется MacShift mac адрес меняется на произвольный (random) через bat файл такого содержания: start c:/macshift/macshift.exe -i "LocalNet" -r где LocalNet - соответственно название сети, и -r - параметр произвольной смены МАКа Возможно ли дописать данный бат файл, чтобы он сохранял каждый раз строчку такого содержания: mac=xxxxxxxxxxxx (соответственно измененный мак адрес) в файл c:/mac.txt И второй вопрос, обратный к первому Какой скрипт нужно написать, чтобы он(скрипт) брал строчку из файла c:/mac.txt содержания mac=xxxxxxxxxxxx и xxxxxxxxxxxx вставлял в скрипт как start c:/macshift/macshift.exe -i "LocalNet" -xxxxxxxxxxxx Спасибо ОГРОМНОЕ заранее! |
|
Отправлено: 00:15, 29-01-2012 |
Пользователь Сообщения: 103
|
Профиль | Отправить PM | Цитировать Как сделать не знаю, но предполагаю, что МАК можно после смены много откуда брать и сохранять
|
Последний раз редактировалось XXXp, 30-01-2012 в 01:40. Отправлено: 01:00, 30-01-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Более понятно описал необходимый скрипт!
За помощь в создании компенсирую финансами потраченное время (чтобы и вам было не накладно) Имеется программа macshift (по запросу могу выслать конечно) Смена произвольного Mac адреса в ней осуществляется через бат файл с содержанием: start c:/macshift/macshift.exe -i "LocalNet" -r где LocalNet - название локальной сети -r - проивольное изменение МАК адреса Соответственно, команда start c:/macshift/macshift.exe -i "LocalNet" -xxxxxxxxxxxx Меняет МАК на -xxxxxxxxxxxx Ну и, соответственно: Необходимо сделать следующий bat файл: Загружается c:/config.ini в нём находится строчка mac= Если строчка ПУСТАЯ, т.е. после = ничего нет (или вообще строчки нет, если так проще) То осуществляет команду start c:/macshift/macshift.exe -i "LocalNet" -r (произвольно меняем мак) и сохраняем получившийся mac в файл c:/config.ini в виде mac=новый мак (без тире и двоеточия) Если строчка НЕ ПУСТАЯ, т.е. mac=zzzzzzzzzzzz То осуществляем команду start c:/macshift/macshift.exe -i "LocalNet" -zzzzzzzzzzzz |
Отправлено: 18:50, 30-01-2012 | #3 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Неужели это нельзя реализовать?
Напоминаю, что постараюсь компенсировать потраченное время на создание скрипта |
Отправлено: 22:29, 31-01-2012 | #4 |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать О боже как всё сложно.
честно говоря, я ничего не понял(( |
|
Отправлено: 01:37, 01-02-2012 | #5 |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать свой macshift который будет использоваться тобой, скинь в тему, что бы быстрей тебе помогли.
|
Отправлено: 02:16, 01-02-2012 | #6 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Вот он!
|
Отправлено: 16:06, 01-02-2012 | #7 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать У нас есть файл config.ini (его содержимое будет меняться естественно), изначально в нём нет строчки mac=xxx, т.е. он используется впервые для macshift
В этом случае (если нет mac ![]() Нам нужно выполнить команду start c:/macshift/macshift.exe -i "LocalNet" -r и записать в этот файл (config.ini) значение нового mac адреса в виде mac=новый мак адрес Если в файле config.ini уже присутствует строчка mac=zzz необходимо выполнить команду start c:/macshift/macshift.exe -i "LocalNet" -zzz и ничего больше никуда не записывать. Либо другой вариант того же, только гораздо более простой (для меня в том числе) Имеем два скрипта: Один записывает случайный mac в каждый из нескольких десятков-сотен файлов c:/configs/*.ini строчкой в виде mac=xxxxxxxxxxxx, причём запись случайного мака необходимо произвести по всем правилам, используемым в macshift (грубо команда -r для проги) Второй скрипт просто бы брал из файла c:/config.ini строчку mac=zzzzzzzzzzzz и запускал бы команду start c:/macshift/macshift.exe -i "LocalNet" -zzzzzzzzzzzz |
Отправлено: 17:09, 01-02-2012 | #8 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Abricosio, вот вам скрипт, программа macshift должна лежать в одной директории с ним (или в любом месте, которое прописано в PATH), местоположение ini-файла для записи укажете сами. Если его не существует по указанному пути, он создается.
@Echo Off SetLocal EnableDelayedExpansion :: Проверяем, существует ли файл, и есть ли в нем нужный нам ключ (mac) Set CfgFile=config.ini If Not Exist "%CfgFile%" Echo mac=>"%CfgFile%" type "%CfgFile%"|Find /I "mac=">nul||Echo mac=>>"%CfgFile%" :: Проверяем ini-файл на наличие значения mac Call :ReadKeyValue If Defined mac ( Echo MAC найден: [%mac%] :: Если найдено - запускаем macshift со значением из файла call macshift -i "LocalNet" %Mac%>nul ) Else ( :: Если не найдено - запускаем с ключом -r, парсим вывод и сохраняем новый mac в файл For /F "tokens=7 skip=1" %%A In ('macshift -i "LocalNet" -r^|find "MAC"') Do ( Set mac=%%A Set mac=!mac:~,-3! ) Echo MAC не найден, сгенерирован новый: [!mac!] Call :WriteKeyValue ) Pause Exit rem ====== Функции для работы с ini :ReadKeyValue If Not Exist %CfgFile% (Exit 1) Set i=0 For /F "tokens=1,2 delims== usebackq" %%A In ("%CfgFile%") Do ( Set /A i+=1 Set %%A=%%B Set CfgKey!i!=%%A Set CfgStrings=!i! ) Exit /B :WriteKeyValue If Exist "%CfgFile%" (Del "%CfgFile%") For /L %%S In (1,1,%CfgStrings%) Do ( Call :SingleLine "!CfgKey%%S!" ) Exit /B :SingleLine Echo %~1=!%~1!>>"%CfgFile%" Exit /B rem =============================== |
Последний раз редактировалось Anonymоus, 02-02-2012 в 22:35. Отправлено: 17:54, 02-02-2012 | #9 |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать Думаю не совсем всё как надо... По моему надо обратное действие ещё...
что бы мак в дальнейшем брался из конфига, если он там есть то уже выполнять команду Цитата Abricosio:
|
|
Отправлено: 18:06, 02-02-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.? | Dark Ange1 | Скриптовые языки администрирования Windows | 28 | 22-06-2022 14:37 | |
VBS/WSH/JS - [решено] Добавление параметра в текстовый файл равный названию файла | XXXp | Скриптовые языки администрирования Windows | 14 | 31-03-2012 23:56 | |
Delphi - [решено] Сохранение в файл | vovan1993 | Программирование и базы данных | 18 | 01-07-2011 17:49 | |
[решено] Изменить значение параметра — Не INI файл! | semiono | AutoIt | 21 | 13-08-2010 14:12 | |
Как в Omni Page распознавать файл переданый в качестве параметра командной строки | madmax24 | Программное обеспечение Windows | 8 | 07-06-2007 19:59 |
|