pillack
Goto Top

Eintrag in eine CFG-Datei schreiben bzw. löschen

Hallo und schönen guten Tag ins Forum. Mein Name ist Christian und ich komme aus Dortmund. Ich habe meine Stadt in den Flugsimulator X von Microsoft eingebunden.

Ich möchte automatisiert mittels einer Installationsroutine eine so genannte Addon Scenery in der Bibliothek des Flugsimulators X von Microsoft anmelden.

Kannst mir jemand eine kleine Hilfestellung geben, wie ich mittels einer Batch-Datei oder ähnlichem, einen Abschnitt in eine CFG-Datei Eintrage bzw. wieder Lösche?

Der Name dieser Szenerie ist Dortmund City und der Eintrag soll so aussehen:

[Area.xxx]
Title=Dortmund City
Local=Addon Scenery\Dortmund City
Active=FALSE
Layer=xxx
Required=FALSE

Wobei xxx für eine fortlaufende Nummer seht.


Auch stundenlanges Suchen im Internet brachte keinen befriedigenden Erfolg, obwohl einige Werkzeuge fürs An/Abmelden von Szenerien in Netz vorliegen, aber leider sind diese nicht für mich geeignet.

Meine Vorstellung für eine Prozedur sieht so aus:

Szenerie-Eintrag (Installation):

1. Richtigen Pfad zur Scenery.cfg finden.
2. Sicherheitskopie der originalen Scenery.cfg mit mit Namen "ORG_Dortmund City.cfg" erstellen.
3. Der Computer soll innerhalb der Datei Scenery.cfg nach dem Text "Dortmund City" suchen. Falls vorhanden, dann
soll er keine Änderungen an der Scenery.cfg vornehmen.
4. Wenn der Text "Dortmund City" nicht vorhanden ist, dann soll er einen Block mit forlaufender Nummer erstellen.

Der Block/Abschnitt soll so aussehen, wobei xxx die fortlaufende bzw. der letzte Eintrag ist.

[Area.xxx]
Title=Dortmund City
Layer=xxx
Active=TRUE
Required=FALSE
Local=Addon Scenery\Dortmund City
Remote=


Szenerie-Austrag (Deinstallation):

1. Richtigen Pfad zur Scenery.cfg finden.
2. Suche in der Datei Scenery.cfg nach dem Text "Dortmund City", unabhängig von der Nummer.
3. Wenn gefunden, den Kompletten Block entfernen.
4. Datei "ORG_Dortmund City.cfg" löschen.

Mein Pfad zur Scenery.cfg ist: %allusersprofile%\Microsoft\FSX\scenery.cfg
Aber wie muss der Pfad bei WinXP aussehen?

Ich wäre sehr Dankbar, wenn mir jemand in dieser Angelegenheit weiterhelfen könnte und hoffe somit auf eine Antwort.

Grüsse:
Christian

PS:
Mein System:
Win7 64bit, Intel Core2 Duo E8400
4GB RAM, Board: Asus P5QSE

Content-Key: 142790

Url: https://administrator.de/contentid/142790

Printed on: April 19, 2024 at 19:04 o'clock

Member: bastla
bastla May 13, 2010, updated at Oct 18, 2012 at 16:42:06 (UTC)
Goto Top
Hallo Christian!

Ein Stück für den "Installations"-Teil hatten wir ja schon mal hier ...

... und vielleicht lässt sich ja auch für XP ein Pfad unterhalb von "%allusersprofile%" unterstellen (kann ich allerdings nur mutmaßen).

Grüße
bastla
Member: bastla
bastla May 14, 2010 at 09:10:12 (UTC)
Goto Top
Hallo Christian!

Die Deinstallation könnte etwa so gehen (wobei - vorerst - die Suche wie gestern schon angemerkt nur unter "%allusersprofile%" vorgenommen wird):
@echo off & setlocal
set "Suche=Title=Dortmund City"  
set "Basis=%allusersprofile%"  
set "Datei=scenery.cfg"  

set "cfg="  
for /f "delims=" %%i in ('dir /s /b /a-d "%Basis%\%Datei%"^|findstr /i "\\FSX\\%Datei%"') do set "cfg=%%i"  
if not defined cfg echo %Datei% nicht gefunden & goto :Ende

set "Zeile="  
for /f "delims=:" %%i in ('findstr /i /b /n /c:"%Suche%" "%cfg%"') do set "ZNr=%%i"  
if not defined ZNr echo "%Suche%" nicht gefunden! & goto :Ende  

set "ANr="  
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%cfg%"') do if %%i gtr %ZNr% if not defined ANr (set "Zeile=%%j" & call :ProcessLine1)  

if not defined ANr echo Area-Code nicht gefunden! & goto :Ende
if "%ANr%"=="NV" echo Area-Code nicht gefunden! & goto :Ende  

set "Suche=\[Area\.%ANr%\]"  
set "bak=%temp%\%Datei%"  
move "%cfg%" "%bak%"  
set "Schreiben=True"  
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%bak%"') do set "Zeile=%%j" & call :ProcessLine2  
goto :eof

:ProcessLine1
if "%Zeile:~,1%"=="[" set "ANr=NV" & goto :eof  
if "%Zeile%"=="" set "ANr=NV" & goto :eof  
for /f "tokens=1* delims==" %%i in ("%Zeile%") do if /i "%%i"=="Layer" set "ANr=%%j"  
goto :eof

:ProcessLine2
echo "%Zeile%"|findstr "%Suche%">nul && (set "Schreiben=" & goto :eof)  
if not defined Schreiben (
    if "%Zeile:~,1%"=="[" set "Schreiben=True"  
    if "%Zeile%"=="" set "Schreiben=True"  
)
if defined Schreiben >>"%cfg%" echo\%Zeile%  
goto :eof

:Ende
pause
Soferne das funktioniert, lässt sich die Suche nach der "scenery.cfg" auch in den oben verlinkten Installations-Ansatz integrieren.

Grüße
bastla