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

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

Ответить
Настройки темы
CMD/BAT - Сохранение параметра в файл и обратное действие

Новый участник


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

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


Добрый вечер!
Есть вопрос, буду благодарен за любую помощь.
Есть программа по смене 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
Благодарности: 0

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


Как сделать не знаю, но предполагаю, что МАК можно после смены много откуда брать и сохранять

Последний раз редактировалось XXXp, 30-01-2012 в 01:40.


Отправлено: 01:00, 30-01-2012 | #2



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

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


Новый участник


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

Профиль | Отправить 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
Благодарности: 0

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


Неужели это нельзя реализовать?
Напоминаю, что постараюсь компенсировать потраченное время на создание скрипта

Отправлено: 22:29, 31-01-2012 | #4


Аватара для root221

Старожил


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

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


О боже как всё сложно.

честно говоря, я ничего не понял((

Отправлено: 01:37, 01-02-2012 | #5


Аватара для root221

Старожил


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

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


свой macshift который будет использоваться тобой, скинь в тему, что бы быстрей тебе помогли.

Отправлено: 02:16, 01-02-2012 | #6


Новый участник


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

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


Вложения
Тип файла: rar macshift.rar
(33.8 Kb, 22 просмотров)

Вот он!

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


Новый участник


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

Профиль | Отправить 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
Благодарности: 257

Профиль | Отправить 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 ===============================
Да, вот ещё: я саму программу macshift не стал запускать у себя, скрипт набросал без отладки, так что вы проверьте - всё ли правильно работает?

Последний раз редактировалось Anonymоus, 02-02-2012 в 22:35.

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

Отправлено: 17:54, 02-02-2012 | #9


Аватара для root221

Старожил


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

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


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

Код: Выделить весь код
mac=Тут значение уже вместо -r
Цитата Abricosio:
Второй скрипт просто бы брал из файла c:/config.ini строчку mac=zzzzzzzzzzzz и запускал бы команду
start c:/macshift/macshift.exe -i "LocalNet" -zzzzzzzzzzzz »
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:06, 02-02-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход