|
Компьютерный форум 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 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Цитата root221:
Перво-наперво, проверяем, есть ли вообще файл, заданный как конфигурационный. Если нету - создаем. Если внутри него нету ключа mac - дописываем пустое. Далее, считываем key-value значения из него с помощью функции :ReadKeyValue, при этом создаются переменные с нужными значениями. После проверяем, определена ли переменная mac - если определена, то запускаем macshift с этим mac-адресом. Если не определена - запускаем macshift, но с ключом -r, он устанавливает случайный мак-адрес, выбираем его знаачение из stdout с помощью конвеера и find, назначаем новое значение переменной mac и записываем в файл с помощью функции :WriteKeyValue |
|
Отправлено: 18:15, 02-02-2012 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось root221, 02-02-2012 в 18:51. Отправлено: 18:44, 02-02-2012 | #12 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать root221, понял, спасибо. Я просто по синтаксису, предложенному автором написал, саму утилиту у себя не запускал из соображений безопасности, а виртуалку поднимать лень было. Исправил в скрипте.
|
Отправлено: 19:11, 02-02-2012 | #13 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Вроде все работает! Спасибо! Как только отключить диалог "нажмите кнопку для продолжения"?
И пришлите пожалуйста в личку вариант перевода Вам моей благодарности ![]() |
Отправлено: 00:11, 03-02-2012 | #14 |
![]() Старожил Сообщения: 177
|
Профиль | Отправить PM | Цитировать |
Отправлено: 06:30, 03-02-2012 | #15 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать 2Anonymоus
Спасибо большое, через личные сообщения не получается писать, говорит что у вас переполнен ящик) |
Отправлено: 12:45, 03-02-2012 | #16 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Да, так и есть, только что почистил. В последнее время часто пишут. Вам тоже спасибо, если понадобится помощь со скриптами - обращайтесь, помогу по мере возможностей.
|
Отправлено: 12:48, 03-02-2012 | #17 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Вылезла маленькая неувязочка в скрипте, он добавляет знак равенства "="
ко всем параметрам в файле ini в квадратных скобках, т.е. было [blabla] стало после работы скрипта [blabla]= из-за чего теперь не работает другая часть конфига. Не подскажите как решить данную проблему?) Спасибо |
Отправлено: 01:57, 14-02-2012 | #18 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Abricosio, поправил, теперь больше такого не будет. Вы просто не уточнили с самого начала, что в конфиге могут быть секции 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 ) 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 If "%~1"=="" Exit /B If Not "!%~1!"=="" (Echo %~1=!%~1!>>"%CfgFile%") Else (Echo %~1>>"%CfgFile%") Exit /B rem =============================== |
Отправлено: 03:07, 14-02-2012 | #19 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Спасибо большое!
|
Отправлено: 16:27, 14-02-2012 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|