Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


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

Профиль | Отправить 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