Frage von Pascal199412, 57

BATCH Programmierung ini Dateien, werte auslesen?

Hallo ich will aus einer ini Datei einen Wert einer bestimmten Variable auslesen lassen. z.B ist innerhalb der ini Datei die Variable "Test=1" und ich will jetzt das mir nur diese 1 ausgeben wird. Wie mach ich das jetzt am besten?

Antwort
von Suboptimierer, 37

Muss es Batch sein? Mit VBScript bekäme ich es schneller hin:

MsgBox "Wert in x.ini für Test: '" & IniAuslesen("x.ini", "Test") & "'"

Function IniAuslesen(sIni, sSchluessel) IniAuslesen = "" Dim C_FILE_FORREADING : C_FILE_FORREADING = 1 Dim fso Dim oFile Dim sZeile
Set fso = CreateObject("Scripting.FileSystemObject") Set oFile = fso.OpenTextFile(sIni, C_FILE_FORREADING) while not oFile.AtEndOfStream sZeile = oFile.ReadLine() if LCase(Left(sZeile, Len(sSchluessel)+1)) = LCase(sSchluessel) & "=" then IniAuslesen = Mid(sZeile, Len(sSchluessel)+2, 1024) Exit Function end if wend End Function
Kommentar von Pascal199412 ,

Danke aber ja es sollte schon Batch sein wenn möglich ..

Kommentar von Suboptimierer ,

Das ist doch asbach ;P

Nee, sorry, über Grundwissen hinaus kann ich dir bei Batch nicht helfen.
Ich finde Batch auch immer sehr schwer zu lesen und damit zu warten, wenn man da Schleifen oder ähnliches einbaut.

Antwort
von MarkusGenervt, 26

Das geht relativ einfach mit FOR:

setlocal enabledelayedexpansion

for /f "usebackq tokens=1,2* eol=; delims==" %%K in ("Meine Einstellungen.ini") do (
set key=%%~K
if /i not "!key:~0,1!" == "[" (
set value=%%~L
echo %value%
)
)

Hierbei wird die INI-Datei zeilenweise ausgelesen.

Für eine Windows-konforme INI-Datei werden ";" als Kommentar-Zeichen (eol=Zeilenendmarke) berücksichtigt.

Als Variablen werden %%K (tokens=1,2*) für den Anfang der Zeile bis zum ersten "=" (delims==) gesetzt und alles, was danach kommt, wird %%L (tokens=1,2*) zugeordnet. Ohne das "*" würde der INI-Wert ggf. nur bis zum zweiten "=" ausgelesen werden.

Wenn eine Zeile mit einem "[" beginnt, wird diese ignoriert, da dies eine Sektion einleitet.

"usebackq" wird benötigt, um Doppelte Anführungszeichen für Dateinamen mit Sonderzeichen setzen zu können, da eine solche Angabe sonst als literaler String ausgewertet werden würde.

Der erste Befehl "SETLOCAL …" wird benötigt, um das Setzen einer Variablen innerhalb einer IF-Anweisung erfolgreich auch außerhalb der IF-Anweisung beibehalten zu können. Dadurch ändert sich die Interpretations-Syntax für Variablen und das "%" muss durch das "!" ersetzt werden.

Keine passende Antwort gefunden?

Fragen Sie die Community