Variable aus ini Datei auslesen und weiterverwenden
Hallo zusammen,
ich habe eine settings.ini Datei, die unter anderem folgendes beinhaltet:
[Settings]
port=1313
Nun möchte ich den Port auslesen um mit dem Wert weiterarbeiten zu können.
Wie mache ich das?
ich habe eine settings.ini Datei, die unter anderem folgendes beinhaltet:
[Settings]
port=1313
Nun möchte ich den Port auslesen um mit dem Wert weiterarbeiten zu können.
Wie mache ich das?
Please also mark the comments that contributed to the solution of the article
Content-Key: 308111
Url: https://administrator.de/contentid/308111
Printed on: April 18, 2024 at 07:04 o'clock
17 Comments
Latest comment
Hier, das sollte laufen, ist der Code von Kraemer nur etwas angepasst:
Edit: Zeile (05) mit dem richtigen Pfad anpassen!
@echo off
cls
:: hier kommt dein ganzer Pfad
set "Verzeichnis=%~dp0"
set "Gesucht=port"
set "Wert="
FOR /F "delims=:" %%i in ('findstr /N /B /L /C:"%Gesucht%" "%Verzeichnis%\universalpos.ini"') do set zeile=%%i
echo. %Gesucht% liegt in %zeile% Zeile
set /a zeile=%zeile%-1
FOR /F "skip=%zeile% tokens=2 delims==" %%i in ('type "%Verzeichnis%\universalpos.ini"') do if not defined Wert set Wert=%%i
echo. Wert von %Gesucht% ist %Wert%
pause>nul
Dann versuche es mal damit:
@setlocal enableextensions enabledelayedexpansion
@echo off
set file=%~1
set area=[%~2]
set key=%~3
set currarea=
for /f "usebackq delims=" %%a in ("!file!") do (
set ln=%%a
if "x!ln:~0,1!"=="x[" (
set currarea=!ln!
) else (
for /f "tokens=1,2 delims== " %%b in ("!ln!") do (
set currkey=%%b
set currval=%%c
if "x!area!"=="x!currarea!" if "x!key!"=="x!currkey!" (
echo !currval!
)
)
)
)
endlocal
Hi, versuche es damit:
Port wird nur gelesen, wenn es im Abschnitt [Settings] steht.
@echo off & setlocal enabledelayedexpansion
cls
:: Pfad & iniDatei hier
set "Pfad=c:\Matrix\MatrixUniversal\etc\"
set "OrginiDatei=universalpos.ini"
set "Abschnitt=[Settings]"
set "Schluessel=port"
set "gefunden="
pushd %Pfad% || goto :eof
for /f "delims=" %%i in (%OrginiDatei%) do (
set "line=%%i"
if "%%i"=="%Abschnitt%" set gefunden=1
if defined gefunden (
if "!line:~0,5!"=="%Schluessel%=" echo Port Wert: !line:~5! &set "gefunden="
)
)
popd
pause>nul
Klitzekleine Änderung:
Als Hammer.cmd speichern und dann wie folgt aufrufen:
@setlocal enableextensions enabledelayedexpansion
@echo off
set file=%~1
set area=[%~2]
set key=%~3
set currarea=
for /f "usebackq delims=" %%a in ("!file!") do (
set ln=%%a
if "x!ln:~0,1!"=="x[" (
set currarea=!ln!
) else (
for /f "tokens=1,2 delims== " %%b in ("!ln!") do (
set currkey=%%b
set currval=%%c
if "x!area!"=="x!currarea!" if "x!key!"=="x!currkey!" (
exit /b !currval!
)
)
)
)
endlocal
Als Hammer.cmd speichern und dann wie folgt aufrufen:
Hammer.cmd c:\test.ini Settings port
echo %errorlevel%