hukialex
Goto Top

Batch bestimmte Zeile in .ini umschreiben

Guten Tag
Ich habe eine Frage . Ich habe 2 Dateien : 1" Main.Bat" und 1 "config.ini"

Code der Main.bat [Nur das wichtige]
echo off
rename config.ini config.bat
call config.bat
rename config.bat config.ini

und der Code von der config.ini"
Set title=--==M==--
Set color=0F
Set password=test
Set C_calc_title=Calculator
Set C_Time_title=Time and Date
Set Safety=true
Set Safety_P=1234
Set Safety_Title=Locked
Set Safety_Login_Fail_Count_MAX=3

Ich benutze die "config,ini" nur zum Variablen setzen. ich möchte nun von der "Main.Bat" die "config,ini" bearbeiten. Zb: "Set Safety_Title=Locked" zu "Set Safety_Title=Hallo" oder "Set color=0F" zu "Set color=9F". Hoffe ihr könnt meine Frage verstehen . Lg Alex . Danke schon mal im Vorraus.

Content-Key: 371776

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

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: SlainteMhath
SlainteMhath 20.04.2018 um 11:12:00 Uhr
Goto Top
Moin,

der Einfachheit halber köntest du die config.ini jedesmal neu schreiben

Etwa so
move config.ini config.bak
echo "set title=%title%" > config.ini  
echo "set color=%color%" >> config.ini  
...

lg,
Slainte
Mitglied: HukiAlex
HukiAlex 20.04.2018 um 11:23:45 Uhr
Goto Top
Hatte ich auch schon drüber nach gedacht,
wäre den aber bisseln veile zeilen .
Dei lösung werde ich auch verweden wenn es nicht anders geht.
kann man nicht die einzeln zeilen umschreiben . ?
Mitglied: miniversum
Lösung miniversum 20.04.2018 um 12:28:15 Uhr
Goto Top
Hallo,

mal abgesehen davon, dass ich da eher hin gehen würde und die "Set" befehle aus der config.ini rausmachen und dann die Datei nicht als bat aufrufen sondern einfach mit einer for Schleife zeilenweise auslesen und set mit der variabeln aufrufen würde, kannst Du doch einfach die Variable danach überschriben.
Du rufst die config.bat auf und danach weist du den neuen Wert zu:

call config.bat
set color=9F

Gruß
...
Mitglied: Friemler
Friemler 20.04.2018 aktualisiert um 13:11:53 Uhr
Goto Top
Hallo Alex,

Du könntest die Variablen mit einem Script setzen, wie ich es in meinem Tutorial zur FOR-Schleife in Beispiel 12 beschreibe (Zeile 13 dieses Scripts ist die entscheidende). Die Config.ini wäre dann wirklich eine INI-Datei nach dem Schema
Schlüssel=Wert
und kann wesentlich einfacher per Texteditor bearbeitet werden.

Eine solche Datei ließe sich z.B. folgendermaßen ändern:

@echo off & setlocal

::Grundkonfiguration
set "IniFile=.\Config.ini"  
set "TmpFile=%Temp%\Config.ini"  


::Schlüssel Safety_Title ändern
set "Key=Safety_Title"  
set "NewValue=Locked"  

call :UpdateIniFile "%Key%" "%NewValue%"  


::Weitere Schlüssel ändern
set "Key=..."  
set "NewValue=..."  

call :UpdateIniFile "%Key%" "%NewValue%"  


::Script beenden
exit /b



::*****************************************************************************
:: Bereich für Unterprogramm
::*****************************************************************************

:UpdateIniFile
  ::Schlüssel ändern
  > "%TmpFile%" (  
    for /f "usebackq tokens=1* delims==" %%a in ("%IniFile%") do (  
      if /i "%%a" neq "%~1" (  
        echo %%a=%%b
      ) else (
        echo %%a=%~2
      )
    )
  )

  ::Originale INI-Datei mit der aktualisierten Version überschreiben
  move "%TmpFile%" "%IniFile%" > NUL  
exit /b 0

Grüße
Friemler