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

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

Аватара для mariolast

Ветеран


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

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


Спасибо, работает.
А не подскажете еще заодно, как присвоить переменной значение секции в INI файле?
Читать то он читает и на экран выводит.
Попытался сделать так, но не получилось, за пределами локали переменная %ini.Value% уничтожается.
Соответственно %PASS% пустое.

echo off
setlocal enableextensions enabledelayedexpansion
set inifile=profiles.ini

SetLocal
call :ini.ReadKey "%inifile%" "[Profile0]" 1 PATH 1
echo. ini.Value!
endlocal&set PASS=%ini.Value%
echo %PASS%
pause
)

exit /b 0

:ini.ReadKey
::%1 - путь к файлу
::%2 - имя секции
::%3 - порядковый номер секции (если имеются одноименные), иначе указывайте 1
::%4 - имя параметра
::%5 - порядковый номер параметра (если имеются одноименные), иначе указывайте 1
for /f "UseBackQ delims=" %%s in ("%~1") do (
if Defined BeginRead (
for /f "tokens=1* delims==" %%k in ("%%s") do (
set ini.Key.Name=%%k
call :TrimSpaces "!ini.Key.Name!" " " "ini.Key.Name"
if /i "!ini.Key.Name!"=="%~4" (
Set /A ini.Keys.Count+=1
if !ini.Keys.Count!==%~5 (
Set ini.Value=%%l
call :TrimSpaces "!ini.Value!" " " "ini.Value"
Exit /B
)
)
)
) else (
set ini.Section.Name=%%s
call :TrimSpaces "!ini.Section.Name!" " " "ini.Section.Name"
if /i "!ini.Section.Name!"=="%~2" (
set /A ini.Sections.Count+=1
if !ini.Sections.Count!==%~3 (
Set BeginRead=true
)
)
)
)
Exit /B

Последний раз редактировалось mariolast, 19-03-2015 в 19:01.


Отправлено: 18:03, 19-03-2015 | #6