Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save 0x4E69676874466F78/c8c868a79c06b69fdf8dcaed6b73a0c9 to your computer and use it in GitHub Desktop.
Save 0x4E69676874466F78/c8c868a79c06b69fdf8dcaed6b73a0c9 to your computer and use it in GitHub Desktop.
Чтение из и запись в cfg и ini.cmd
:: Пример работы
%~d0
cd /d %~dp0
set AppName=intelpwmcontrol
set CfgFile=%appname%.cfg
call :ReadKeyValue
echo Частота: %freq%
set freq=1020
call :WriteKeyValue
more %CfgFile%
:: Создайте файл intelpwmcontrol.cfg с содержимым
:: # Частота ШИМ (не меньше 50, не больше 1050)
:: freq=900
:: Важно, в конфиге в комментарии если конец строки цифра её нужно отбить пробелом!
:: Пример:
:: # Завершать после запуска: 1, 0
rem ====== Функции для работы с ini/cfg
rem v4, правильно сохраняет комментарии и строки, не являющиеся парой key=value
rem основа Anonymous 2011, исправления NightFox 2016
: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
rem исправляем проблему с двоеточием в комментарии, которое нарушает условие
set if=%~1
set if=%if::=%
rem убираем кавычки
for /f "delims=" %%A in ('echo %%%1%%') do set %1=%%~A
if "!%if%!"=="" (
rem goto нужно в условиях между скобками иначе будет ошибка непредвиденного появления !# (ему не нравится завершающая скобка если строка не в кавычках)
goto WriteComment
) else (
goto WriteParameters
)
exit /B
:WriteComment
echo %~1>>%CfgFile%
exit /B
:WriteParameters
echo %~1=!%~1!>>%CfgFile%
exit /B
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment