I'm creating a standalone installation pack for an existing map editor, for my fellow game map makers. The map editor is called Finalsun, and it has an INI file called FinalSun.ini, inside the .ini file, it should refer to the game.exe like this:
[TS]
Exe=PathToExeFile
But there is nothing at the 'exe=' key. And most people don't know how to fix it. So it needs the path of the Game.exe that resides up one level, So I want to create a batch file that adds the user's absolute path of the game.exe at the 'Exe=' key
finalsun.ini is inside Folder1/Map editor/finalsun.ini the game.exe is inside Folder1/Game.exe (up one level of finalsun.ini)
So to clarify, I need a command for my batch file that will edit FinalSun.ini to have:
[TS]
Exe=Usersdirectories/Folder1/game.exe
The batch file i'm using for the installation is also in the Folder1. I really hope someone can help! Thank you!!
Batch to add game.exe's path into INI file
Moderator: DosItHelp
Batch to add game.exe's path into INI file
Last edited by Holland on 04 Apr 2020 13:19, edited 1 time in total.
Re: Batch to add game.exe's path into INI file
Looks weird. The string in brackets is usually a section specifier in the INI file format and thus, it's usually in a separate line. Just to be sure - is this really all in the same line?
Steffen
Steffen
Re: Batch to add game.exe's path into INI file
Ah thanks, no, sorry for the mistake, its
[TS]
Exe=
[TS]
Exe=
Re: Batch to add game.exe's path into INI file
Try something like that:
Update the ini_path variable to the real path. Don't forget to backup the ini file beforehand because it's getting overwritten without any possibility to undo.
Steffen
Code: Select all
@echo off &setlocal
set "ini_path=C:\somewhere\finalsun.ini"
for %%i in ("%ini_path%\..\..") do set "exe_path=%%~fi\game.exe"
set "ts_line="
for /f "delims=:" %%i in ('findstr /bnc:"[TS]" "%ini_path%"') do set /a "ts_line=%%i"
if not defined ts_line exit /b
set "exe_line="
for /f "delims=:" %%i in ('findstr /bnic:"Exe=" "%ini_path%"') do if not defined exe_line if %%i gtr %ts_line% set /a "exe_line=%%i-1"
if not defined exe_line exit /b
for /f %%i in ('type "%ini_path%"^|find /c /v ""') do set /a "end=%%i-2"
setlocal EnableDelayedExpansion
<"!ini_path!" >"!ini_path!~" (
for /l %%i in (1 1 %exe_line%) do (
set "ln=" & set /p "ln="
echo(!ln!
)
echo(Exe=!exe_path!
set /p "ln="
for /l %%i in (%exe_line% 1 %end%) do (
set "ln=" & set /p "ln="
echo(!ln!
)
)
move /y "!ini_path!~" "!ini_path!"
Steffen