|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Изменение параметров в .ini файле |
|
|
CMD/BAT - [решено] Изменение параметров в .ini файле
|
Stalker_AleX333
Сообщения: n/a |
Требуется изменить значения определенных параметров в ini файле, находящемуся по заранее известному пути. При отсутствии нужного параметра, его необходимо добавить в соответствующий раздел вида:
[Interface] fMouseCursorSpeed=1.0000 bDialogueSubtitles=0 bGeneralSubtitles=0 bShowCompass=1 [GamePlay] bShowFloatingQuestMarkers=1 bShowQuestMarkers=1 iDifficulty=0 [Controls] fMouseHeadingSensitivity=0.0200 fGamepadHeadingSensitivity=0.6667 bAlwaysRunByDefault=1 bInvertYValues=0 bGamePadRumble=1 bUseKinect=0 [Particles] iMaxDesired=750 [SaveGame] fAutosaveEveryXMins=15.0000 и т.д. Я полистал последние 5-7 страниц форума и нашел там приблизительно подходящий мне код: @Echo Off CALL :REPLINE "file.ini" "Server_address=" "Server_address=192.1.1.1" CALL :REPLINE "file.ini" "Server_port=" "Server_port=8080" :REPLINE If Not Exist "%~1" Exit /B 1 If Exist "%~dpn1.tmp" DEL /F/Q "%~dpn1.tmp" Set $N=0& For /F "Delims=:" %%i In ('FindStr /BINRC:" *%~2" "%~1"') Do Set $N=%%i If %$N% NEQ 0 For /F "Tokens=1* Delims=:" %%i In ('FindStr /ENRC:"$" "%~1"') Do If "%%i"=="%$N%" ( Echo %~3>>"%~dpn1.tmp" ) ELSE Echo.%%j>>"%~dpn1.tmp" If Exist "%~dpn1.tmp" If Exist "%~1" DEL /F/Q "%~1" If Exist "%~dpn1.tmp" REN "%~dpn1.tmp" "%~nx1" Exit /B 0 Вот мой список значений, которые требуется установить (в самом файле порядок группировки секций может быть другим): [Display] bFXAAEnabled=0 fTreesMidLODSwitchDist=8192.000 fMeshLODLevel2FadeTreeDistance=4096.000 fMeshLODLevel1FadeTreeDistance=6144.000 iMaxDecalsPerFrame=250 iMaxSkinDecalsPerFrame=100 [MAIN] fSkyCellRefFadeDistance=600000.0000 [Trees] uiMaxSkinnedTreesToRender=200 [Water] iWaterReflectHeight=1024 iWaterReflectWidth=1024 Т.е. выглядеть это должно как-то так: set "SkyrimPrefs=%USERPROFILE%\Documents\My Games\Skyrim Special Edition" call :repline "SkyrimPrefs.ini" "bFXAAEnabled=" "bFXAAEnabled=0" call :repline "SkyrimPrefs.ini" "fTreesMidLODSwitchDist=" "fTreesMidLODSwitchDist=8192.000" call :repline "SkyrimPrefs.ini" "fMeshLODLevel1FadeTreeDistance=" "fMeshLODLevel1FadeTreeDistance=6144.000" и т.д. |
|
Отправлено: 18:49, 05-12-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 19:02, 05-12-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Stalker_AleX333
Сообщения: n/a |
Кодировка файла ANSI.
CMD-шник точно не будет запускаться на WinXP, в данном случае это не проблема. |
Отправлено: 19:12, 05-12-2017 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ждите коллег, может помогут.
|
Отправлено: 19:36, 05-12-2017 | #4 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Вот вариант решения, не совсем так, как Вы хотели
@Echo Off cls Set "FileIn=Z:\Soft_In\Тра ля ля.ini" Set /A Nbeg=0 For /F "usebackq delims=:" %%i In (`"FINDSTR /B /L /I /N /C:":AddParametersSpisok" "%~dpnx0""`) DO Set /A Nbeg=%%i If %Nbeg% EQU 0 Echo !!! Не найдены параметры для замены &Pause &Exit /B 240 If Not Exist "%FileIn%" Echo !!! Не найден файл "%FileIn%" &Pause &Exit /B 240 >"%FileIn%.Refresh" (For /F "usebackq tokens=1,* delims==" %%i In (`"more +%Nbeg% "%~dpnx0""`) DO ( If /I "%%i"=="GoTo :Eof" GoTo :Cont If Not "%%j"=="" (Echo %%i=%%j) If "%%j"=="" For /F "tokens=1 delims=]" %%s In ("%%i") DO (Echo %%s]) )) :Cont >"%FileIn%.tmp" (For /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO ( If "%%j"=="" For /F "tokens=1 delims=]" %%s In ("%%i") DO (Echo %%s]) If Not "%%j"=="" (FINDSTR /B /I /N /C:"%%i" "%FileIn%.Refresh" >nul 2>nul)||(Echo %%i=%%j) )) >"%FileIn%" (For /F "usebackq tokens=1,* delims==" %%i In (`"more "%FileIn%.tmp""`) DO ( If "%%j"=="" ( (Echo %%i) For /F "usebackq delims=:" %%n In (`"FINDSTR /B /L /I /N /C:"%%i" "%FileIn%.Refresh"" 2^>nul`) DO Call :NewParameters %%n ) Else ( (Echo %%i=%%j) ) ) Set /A Log=1 For /F "usebackq tokens=1,* delims==" %%i In (`"more "%FileIn%.Refresh""`) DO ( Call :AddSections "%%i" "%%j" ) ) Del "%FileIn%.tmp" 2>nul Del "%FileIn%.Refresh" 2>nul GoTo :Eof :NewParameters For /F "usebackq tokens=1,* delims==" %%a In (`"more +%1 "%FileIn%.Refresh""`) DO ( If "%%b"=="" GoTo :Eof (Echo %%a=%%b) ) GoTo :Eof :AddSections If %2=="" ( Set /A Log=1 FINDSTR /B /L /I /N /C:%1 "%FileIn%" >nul 2>nul && Set /A Log=0 ) If %Log% EQU 1 If %2=="" Echo %~1 If %Log% EQU 1 If Not %2=="" Echo %~1=%~2 GoTo :Eof :AddParametersSpisok [Display] bFXAAEnabled=5555550 fTreesMidLODSwitchDist=8192.000 fMeshLODLevel2FadeTreeDistance=4096.000 fMeshLODLevel1FadeTreeDistance=6144.000 iMaxDecalsPerFrame=250 iMaxSkinDecalsPerFrame=100999999999999999999999999 [MAIN] fSkyCellRefFadeDistance=600000.0000 [Trees] uiMaxSkinnedTreesToRender=2005555 [Water] iWaterReflectHeight=10245555 iWaterReflectWidth=1024 GoTo :Eof В батнике пропишите реальные параметры для замены/вставки между :AddParametersSpisok и GoTo :Eof аналогично моему примеру. Что не так, как Вам хотелось: В изменённом ини-файле все изменённые/добавленные строки станут сразу за заголовком секции в том порядке, как Вы их указали в батнике. Я решил (возможно ошибочно - отзовитесь ), что это не принципиально. Если какая-либо секция отсутствует в ини-файле, а в батнике она указана, она будет добавлена в конец ини со всеми параметрами. Я предполагал (возможно ошибочно), что имена параметров уникальны, то есть в разных секциях не может быть параметров с одинаковыми именами. Как-то малость громоздко получилось ... |
|
------- Последний раз редактировалось megaloman, 06-12-2017 в 20:13. Отправлено: 14:01, 06-12-2017 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 14:43, 06-12-2017 | #6 |
Stalker_AleX333
Сообщения: n/a |
megaloman, да, это то, что мне нужно. Спасибо.
Только я, наверное, много где накосячил, впихивая эту конструкцию в свой код: Скрытый текст
cls @echo off :: Копирование измененных настроек игры в SkyrimPrefs.ini set "FileIn1=%USERPROFILE%\Documents\My Games\Skyrim Special Edition\SkyrimPrefs.ini" set /a nbeg=0 :: Можно сюда комменты, чтоб понятней было, что здесь происходит? for /f "usebackq delims=:" %%i in (`"findstr /b /l /i /n /c:":skyrimprefs_parameters_list" "%~dpnx0""`) do set /a nbeg=%%i >"%FileIn1%.refresh" (for /f "usebackq tokens=*" %%i in (`"more +%Nbeg% "%~dpnx0""`) do (if /i "%%i"=="goto :eof" goto :cont) &Echo %%i) :: И сюда :cont >"%FileIn1%.tmp" (for /f "usebackq tokens=1* delims==" %%i in ("%FileIn1%") do ( if "%%j"=="" echo %%i if not "%%j"=="" (findstr /b /i /n /c:"%%i" "%FileIn3%.refresh" >nul 2>nul)||(echo %%i=%%j) )) :: И сюда >"%FileIn1%" (for /f "usebackq tokens=1,* delims==" %%i in (`"more "%FileIn1%.tmp""`) do ( if "%%j"=="" ( echo %%i for /f "usebackq delims=:" %%n in (`"findstr /b /l /i /n /c:"%%i" "%FileIn1%.refresh"" 2^>nul`) do call :new_parameters %%n ) else ( (echo %%i=%%j) ) ) set /a log=1 for /f "usebackq tokens=1,* delims==" %%i in (`"more "%FileIn1%.refresh""`) do ( call :add_sections "%%i" "%%j" ) ) del "%FileIn1%.tmp" 2>nul del "%FileIn1%.refresh" 2>nul goto :eof :: И сюда :new_parameters for /f "usebackq tokens=1,* delims==" %%a in (`"more +%1 "%FileIn1%.refresh""`) do ( if "%%b"=="" goto :eof (echo %%a=%%b) ) goto :eof :: И сюда :add_sections if %2=="" ( set /a log=1 findstr /b /l /i /n /c:%1 "%FileIn1%" >nul 2>nul && Set /a log=0 ) if %log% equ 1 if %2=="" echo %~1 if %log% equ 1 if not %2=="" echo %~1=%~2 goto :eof :: Список изменяемых параметров SkyrimPrefs.ini [Display] bFXAAEnabled=0 fTreesMidLODSwitchDist=8192.000 fMeshLODLevel2FadeTreeDistance=4096.000 fMeshLODLevel1FadeTreeDistance=6144.000 iMaxDecalsPerFrame=250 iMaxSkinDecalsPerFrame=100 [MAIN] fSkyCellRefFadeDistance=600000.0000 [Trees] uiMaxSkinnedTreesToRender=200 [Water] iWaterReflectHeight=1024 iWaterReflectWidth=1024 :skyrimprefs_parameters_list :: Копирование отсортированного списка модов set "FileIn2=Silver Raven mods pack settings\Plugins.txt" set "BoxOut1=%USERPROFILE%\AppData\Local\Skyrim Special Edition" if not exist "%BoxOut1%" md "%BoxOut1%" copy /y "%FileIn2%" "%BoxOut1%\" :: Копирование файла настроек игры Skyrim.ini set "FileIn3=Silver Raven mods pack settings\Skyrim.ini" set "BoxOut2=%USERPROFILE%\Documents\My Games\Skyrim Special Edition" if not exist "%BoxOut2%" md "%BoxOut2%" copy /y "%FileIn3%" "%BoxOut2%\" if exist "%FileIn1%" ( color 07 echo. echo. echo ■ SkyrimPrefs.ini успешно отредактирован. ) if exist "%FileIn2%" ( color 07 echo. echo. echo ■ Отсортированный список плагинов успешно скопирован в AppData пользователя. ) if exist "%FileIn3%" ( color 07 echo. echo. echo ■ Skyrim.ini успешно скопирован в папку документов пользователя. ) if not exist "%FileIn1%" ( color 0c echo. echo. echo *ОШИБКА! Файл SkyrimPrefs.ini не найден! echo. echo Не удалось внести изменения в файл настроек игры. echo Запустите лаунчер и произведите настройки, согласно своим предпочтениям. Убедитесь, что антивирусное ПО не блокирует работу панели управления и у вас достаточно прав на доступ к папкам пользователя. ) if %nbeg% equ 0 ( color 0c echo. echo. echo *ОШИБКА! Список параметров для SkyrimPrefs.ini не найден! echo. echo Не удалось изменить файл настроек игры. echo Сообщите о данной проблеме автору сборки! Убедитесь, что антивирусное ПО не блокирует работу панели управления и у вас достаточно прав на доступ к папкам пользователя. ) if not exist "%FileIn2%" ( color 0c echo. echo. echo *ОШИБКА! Файл Plugins.txt не найден! echo. echo Не удалось скопировать отсортированный список плагинов. echo Извлеките папку Silver Raven mods pack settings из установочных архивов со сборкой в папку с игрой вручную и перезапустите панель управления. Убедитесь, что антивирусное ПО не блокирует ее работу и у вас достаточно прав на доступ к папкам пользователя. ) if not exist "%FileIn3%" ( color 0c echo. echo. echo *ОШИБКА! Файл Skyrim.ini не найден! echo. echo Не удалось скопировать файл скрытых настроек игры. echo Извлеките папку Silver Raven mods pack settings из установочных архивов со сборкой в папку с игрой вручную и перезапустите панель управления. Убедитесь, что антивирусное ПО не блокирует ее работу и у вас достаточно прав на доступ к папкам пользователя. ) @echo. @echo. pause exit :: goto main_menu Не выводятся мои сообщения и при отсутствии файла SkyrimPrefs.ini, cmd-шник создает таковой и прописывает в тушку все свое содержимое. |
Отправлено: 15:20, 06-12-2017 | #7 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Комментарии по тексту скрипта
@Echo Off cls Set "FileIn=Z:\Soft_In\Тра ля ля.ini" rem Контролируем наличие в батнике данных для замены/обновления Set /A Nbeg=0 For /F "usebackq delims=:" %%i In (`"FINDSTR /B /L /I /N /C:":AddParametersSpisok" "%~dpnx0""`) DO Set /A Nbeg=%%i If %Nbeg% EQU 0 Echo !!! Не найдены параметры для замены &Pause &Exit /B 240 rem Контролируем наличие исходного ини-файла If Not Exist "%FileIn%" Echo !!! Не найден файл "%FileIn%" &Pause &Exit /B 240 rem Организуем отдельный Refresh файл, куда помещаем из батника данные для корректировки исходного ини-файла >"%FileIn%.Refresh" (For /F "usebackq tokens=1,* delims==" %%i In (`"more +%Nbeg% "%~dpnx0""`) DO ( If /I "%%i"=="GoTo :Eof" GoTo :Cont If Not "%%j"=="" (Echo %%i=%%j) If "%%j"=="" For /F "tokens=1 delims=]" %%s In ("%%i") DO (Echo %%s]) )) :Cont rem Организуем промежуточный tmp файл из исходного, в котором удалены все упомянутые для корректировки параметры >"%FileIn%.tmp" (For /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO ( If "%%j"=="" For /F "tokens=1 delims=]" %%s In ("%%i") DO (Echo %%s]) If Not "%%j"=="" (FINDSTR /B /I /N /C:"%%i" "%FileIn%.Refresh" >nul 2>nul)||(Echo %%i=%%j) )) rem Получаем боевой ини-файл с именем исходного. Берём tmp-файл, rem Последовательно анализируем наличие секции в Refresh файле, если она там присутствует, забираем из Refresh файла всю секцию rem Дописываем далее в эту секцию всё что осталось в tmp-файле из этой секции rem Просматриваем Refresh-файл, если не находим какой-либо помянутой там секции в боевом файле, дописываем эту секцию в конец >"%FileIn%" (For /F "usebackq tokens=1,* delims==" %%i In (`"more "%FileIn%.tmp""`) DO ( If "%%j"=="" ( Echo %%i For /F "usebackq delims=:" %%n In (`"FINDSTR /B /L /I /N /C:"%%i" "%FileIn%.Refresh"" 2^>nul`) DO Call :NewParameters %%n ) Else ( (Echo %%i=%%j) ) ) Set /A Log=1 For /F "usebackq tokens=1,* delims==" %%i In (`"more "%FileIn%.Refresh""`) DO ( Call :AddSections "%%i" "%%j" ) ) rem Удаляем промежуточные файлы Del "%FileIn%.tmp" 2>nul Del "%FileIn%.Refresh" 2>nul GoTo :Eof rem Забираем секцию из Refresh файла :NewParameters For /F "usebackq tokens=1,* delims==" %%a In (`"more +%1 "%FileIn%.Refresh""`) DO ( If "%%b"=="" GoTo :Eof (Echo %%a=%%b) ) GoTo :Eof rem Добавляем в конечный файл отсутствующие в нём секции из Refresh файла :AddSections If %2=="" ( Set /A Log=1 FINDSTR /B /L /I /N /C:%1 "%FileIn%" >nul 2>nul && Set /A Log=0 ) If %Log% EQU 1 If %2=="" Echo %~1 If %Log% EQU 1 If Not %2=="" Echo %~1=%~2 GoTo :Eof :AddParametersSpisok [Display] bFXAAEnabled=01234567890 fTreesMidLODSwitchDist=8192.000 fMeshLODLevel2FadeTreeDistance=4096.000 fMeshLODLevel1FadeTreeDistance=6144.000 kuku=868768686 iMaxDecalsPerFrame=250 iMaxSkinDecalsPerFrame=100 [MAIN] fSkyCellRefFadeDistance=600000.0000 [Trees] uiMaxSkinnedTreesToRender=200 [Water] iWaterReflectHeight=1024 iWaterReflectWidth=1024 GoTo :Eof Я не узнаю своего скрипта, трудно понять, в чём загвоздка
Старый анекдот.
- Звонок в техподдержку: у меня не работает компьютер. - Следует совет: а попробуйте устранить неисправность сами. -Возмущенный клиент: а как директор фирмы смотрит на то, что вы уклоняетесь от работы? - ответ: положительно, обычно после действий клиента доходы фирмы значительно вырастают. |
------- Последний раз редактировалось megaloman, 06-12-2017 в 20:50. Отправлено: 19:18, 06-12-2017 | #8 |
Stalker_AleX333
Сообщения: n/a |
Отдельно от всего код полностью рабочий. Остался только один вопрос: как перескочить с него на другой в одном cmd-шнике?
И как он останавливается? goto :eof в самом конце его как-будто, зацикливает. Оставил все как есть, только подкрепил внизу свое барахло, и перенес информационные сообщения: Скрытый текст
cls @echo off set "FileIn1=%USERPROFILE%\Documents\My Games\Skyrim Special Edition\SkyrimPrefs.ini" :: Контролируем наличие в батнике данных для замены/обновления Set /A Nbeg=0 For /F "usebackq delims=:" %%i In (`"FINDSTR /B /L /I /N /C:":skyrimprefs_parameters_list" "%~dpnx0""`) DO Set /A Nbeg=%%i :: Перемещено вниз, но не работает ::If %Nbeg% EQU 0 Echo !!! Не найдены параметры для замены &Pause &Exit /B 240 :: Перемещено вниз, но не работает ::If Not Exist "%FileIn1%" Echo !!! Не найден файл "%FileIn1%" &Pause &Exit /B 240 :: Организуем отдельный Refresh файл, куда помещаем из батника данные для корректировки исходного ини-файла >"%FileIn1%.Refresh" (For /F "usebackq tokens=*" %%i In (`"more +%Nbeg% "%~dpnx0""`) DO (If /I "%%i"=="GoTo :Eof" GoTo :Cont) &Echo %%i) :Cont :: Организуем промежуточный tmp файл из исходного, в котором удалены все упомянутые для корректировки параметры >"%FileIn1%.tmp" (For /F "usebackq tokens=1* delims==" %%i In ("%FileIn1%") DO ( If "%%j"=="" Echo %%i If Not "%%j"=="" (FINDSTR /B /I /N /C:"%%i" "%FileIn1%.Refresh" >nul 2>nul)||(Echo %%i=%%j) )) :: Получаем боевой ини-файл с именем исходного. Берём tmp-файл, :: Последовательно анализируем наличие секции в Refresh файле, если она там присутствует, забираем из Refresh файла всю секцию :: Дописываем далее в эту секцию всё что осталось в tmp-файле из этой секции :: Просматриваем Refresh-файл, если не находим какой-либо помянутой там секции в боевом файле, дописываем эту секцию в конец >"%FileIn1%" (For /F "usebackq tokens=1,* delims==" %%i In (`"more "%FileIn1%.tmp""`) DO ( If "%%j"=="" ( Echo %%i For /F "usebackq delims=:" %%n In (`"FINDSTR /B /L /I /N /C:"%%i" "%FileIn1%.Refresh"" 2^>nul`) DO Call :NewParameters %%n ) Else ( (Echo %%i=%%j) ) ) Set /A Log=1 For /F "usebackq tokens=1,* delims==" %%i In (`"more "%FileIn1%.Refresh""`) DO ( Call :AddSections "%%i" "%%j" ) ) :: Удаляем промежуточные файлы Del "%FileIn1%.tmp" 2>nul Del "%FileIn1%.Refresh" 2>nul GoTo :Eof :: Забираем секцию из Refresh файла :NewParameters For /F "usebackq tokens=1,* delims==" %%a In (`"more +%1 "%FileIn1%.Refresh""`) DO ( If "%%b"=="" GoTo :Eof (Echo %%a=%%b) ) GoTo :Eof :: Добавляем в конечный файл отсутствующие в нём секции из Refresh файла :AddSections If %2=="" ( Set /A Log=1 FINDSTR /B /L /I /N /C:%1 "%FileIn1%" >nul 2>nul && Set /A Log=0 ) If %Log% EQU 1 If %2=="" Echo %~1 If %Log% EQU 1 If Not %2=="" Echo %~1=%~2 GoTo :Eof :skyrimprefs_parameters_list [Display] bFXAAEnabled=0 fTreesMidLODSwitchDist=8192.000 fMeshLODLevel2FadeTreeDistance=4096.000 fMeshLODLevel1FadeTreeDistance=6144.000 iMaxDecalsPerFrame=250 iMaxSkinDecalsPerFrame=100 [MAIN] fSkyCellRefFadeDistance=600000.0000 [Trees] uiMaxSkinnedTreesToRender=200 [Water] iWaterReflectHeight=1024 iWaterReflectWidth=1024 GoTo :Eof ::::::::::::::::::::::::::::::::::::::::::::::::::: :: Копирование отсортированного списка модов set "FileIn2=Silver Raven mods pack settings\Plugins.txt" set "BoxOut1=%USERPROFILE%\AppData\Local\Skyrim Special Edition" if not exist "%BoxOut1%" md "%BoxOut1%" copy /y "%FileIn2%" "%BoxOut1%\" :: Копирование файла настроек игры Skyrim.ini set "FileIn3=Silver Raven mods pack settings\Skyrim.ini" set "BoxOut2=%USERPROFILE%\Documents\My Games\Skyrim Special Edition" if not exist "%BoxOut2%" md "%BoxOut2%" copy /y "%FileIn3%" "%BoxOut2%\" if exist "%FileIn1%" ( color 07 echo. echo. echo ■ SkyrimPrefs.ini успешно отредактирован. ) if exist "%FileIn2%" ( color 07 echo. echo. echo ■ Отсортированный список плагинов успешно скопирован в AppData пользователя. ) if exist "%FileIn3%" ( color 07 echo. echo. echo ■ Skyrim.ini успешно скопирован в папку документов пользователя. ) if not exist "%FileIn1%" ( color 0c echo. echo. echo *ОШИБКА! Файл SkyrimPrefs.ini не найден! echo. echo Не удалось внести изменения в файл настроек игры. echo Запустите лаунчер и произведите настройки, согласно своим предпочтениям. Убедитесь, что антивирусное ПО не блокирует работу панели управления и у вас достаточно прав на доступ к папкам пользователя. ) if %Nbeg% EQU 0 ( color 0c echo. echo. echo *ОШИБКА! Список параметров для SkyrimPrefs.ini не найден! echo. echo Не удалось внести изменения в файл настроек игры. echo Сообщите о данной проблеме автору сборки! Убедитесь, что антивирусное ПО не блокирует работу панели управления и у вас достаточно прав на доступ к папкам пользователя. ) if not exist "%FileIn2%" ( color 0c echo. echo. echo *ОШИБКА! Файл Plugins.txt не найден! echo. echo Не удалось скопировать отсортированный список плагинов. echo Извлеките папку Silver Raven mods pack settings из установочных архивов со сборкой в папку с игрой вручную и перезапустите панель управления. Убедитесь, что антивирусное ПО не блокирует ее работу и у вас достаточно прав на доступ к папкам пользователя. ) if not exist "%FileIn3%" ( color 0c echo. echo. echo *ОШИБКА! Файл Skyrim.ini не найден! echo. echo Не удалось скопировать файл скрытых настроек игры. echo Извлеките папку Silver Raven mods pack settings из установочных архивов со сборкой в папку с игрой вручную и перезапустите панель управления. Убедитесь, что антивирусное ПО не блокирует ее работу и у вас достаточно прав на доступ к папкам пользователя. ) @echo. @echo. pause exit |
Отправлено: 20:40, 06-12-2017 | #9 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Stalker_AleX333, Возмите доработаный вариант скрипта, он надёжнее. Я подчеркнул доработки.
GoTo :Eof ничего не зацикливает. Это один из способов указать на окончание завершение программной единицы: главной части и каждой подпрограммы. По моему убеждению в Вашем коде всё, что ниже ::::::::::::::::::::::::::::::::::::::::::::::::::: работать не будет. Скрипт исполняется последовательно, и после GoTo :Eof в тот кусок скрипта попасть невозможно, Вы на него никак не ссылаетесь. Так можно совместить мой код и Ваш (я его не изучал, что там делается, не смотрел). Не понимаю, почему Вы убираете контроль файла на наличие и наличие обновлений.
@Echo Off cls Call :ModyIniFile "Z:\Soft_In\Тра л2я ля.ini" If Not %ErrorLevel%==0 GoTo :Eof rem Далее свой кусок скрипта GoTo :Eof :ModyIniFile Set "FileIn=%~1" Set /A Nbeg=0 For /F "usebackq delims=:" %%i In (`"FINDSTR /B /L /I /N /C:":AddParametersSpisok" "%~dpnx0""`) DO Set /A Nbeg=%%i If %Nbeg% EQU 0 Echo !!! Не найдены параметры для замены &Pause &Exit /B 240 If Not Exist "%FileIn%" Echo !!! Не найден файл "%FileIn%" &Pause &Exit /B 240 >"%FileIn%.Refresh" (For /F "usebackq tokens=1,* delims==" %%i In (`"more +%Nbeg% "%~dpnx0""`) DO ( If /I "%%i"=="GoTo :Eof" GoTo :Cont If Not "%%j"=="" (Echo %%i=%%j) If "%%j"=="" For /F "tokens=1 delims=]" %%s In ("%%i") DO (Echo %%s]) )) :Cont >"%FileIn%.tmp" (For /F "usebackq tokens=1* delims==" %%i In ("%FileIn%") DO ( If "%%j"=="" For /F "tokens=1 delims=]" %%s In ("%%i") DO (Echo %%s]) If Not "%%j"=="" (FINDSTR /B /I /N /C:"%%i" "%FileIn%.Refresh" >nul 2>nul)||(Echo %%i=%%j) )) >"%FileIn%" (For /F "usebackq tokens=1,* delims==" %%i In (`"more "%FileIn%.tmp""`) DO ( If "%%j"=="" ( (Echo %%i) For /F "usebackq delims=:" %%n In (`"FINDSTR /B /L /I /N /C:"%%i" "%FileIn%.Refresh"" 2^>nul`) DO Call :NewParameters %%n ) Else ( (Echo %%i=%%j) ) ) Set /A Log=1 For /F "usebackq tokens=1,* delims==" %%i In (`"more "%FileIn%.Refresh""`) DO ( Call :AddSections "%%i" "%%j" ) ) Del "%FileIn%.tmp" 2>nul Del "%FileIn%.Refresh" 2>nul Exit /B 0 :NewParameters For /F "usebackq tokens=1,* delims==" %%a In (`"more +%1 "%FileIn%.Refresh""`) DO ( If "%%b"=="" GoTo :Eof (Echo %%a=%%b) ) GoTo :Eof :AddSections If %2=="" ( Set /A Log=1 FINDSTR /B /L /I /N /C:%1 "%FileIn%" >nul 2>nul && Set /A Log=0 ) If %Log% EQU 1 If %2=="" Echo %~1 If %Log% EQU 1 If Not %2=="" Echo %~1=%~2 GoTo :Eof :AddParametersSpisok [Display] bFXAAEnabled=djabmnsbmnabm5555550 fTreesMidLODSwitchDist=8192.000 fMeshLODLevel2FadeTreeDistance=4096.000 fMeshLODLevel1FadeTreeDistance=6144.000 iMaxDecalsPerFrame=250 iMaxSkinDecalsPerFrame=100999999999999999999999999 [MAIN] fSkyCellRefFadeDistance=600000.0000 [Trees] uiMaxSkinnedTreesToRender=2005555 [Water] iWaterReflectHeight=10245555 iWaterReflectWidth=1024 GoTo :Eof |
------- Последний раз редактировалось megaloman, 06-12-2017 в 21:26. Отправлено: 20:51, 06-12-2017 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Загрузка параметров из ini файла в GUI | -TRM- | AutoIt | 21 | 30-09-2017 12:14 | |
CMD/BAT - Переменная в Ini файле | Renko13 | Скриптовые языки администрирования Windows | 2 | 28-06-2014 14:11 | |
Разное - в файле desktop.ini на флешке в этом файле написано... | imrik | Microsoft Windows 2000/XP | 1 | 17-03-2012 00:58 | |
Перемешивание и сортировка в INI файле | Centrinar | AutoIt | 39 | 23-06-2011 03:11 | |
CMD/BAT - [решено] Поиск и изменение содержимого в INI файле | avb_trader | Скриптовые языки администрирования Windows | 6 | 11-10-2010 08:20 |
|