Last active
July 6, 2021 00:06
-
-
Save 0x4E69676874466F78/c8c868a79c06b69fdf8dcaed6b73a0c9 to your computer and use it in GitHub Desktop.
Чтение из и запись в cfg и ini.cmd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:: Пример работы | |
%~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