Dos Script: Ersetzen eines Teilstrings durch den Inhalt einer Variablen



  • Ich habe in einer Textdatei einen String in dieser Form:

    # gibt die Position des Arbeitsbereiches an
    WORKSPACE=D:\%USERNAME%\workspace
    

    dies lade ich wie folgt in mein Script

    FOR /F "eol=# tokens=1* delims== " %%a IN (eclipse.config) DO (
        REM TODO: Variablen ersetzen
        IF DEFINED DEBUG echo +  Setze %%a=%%b
        set %%a=%%b
    )
    

    Wenn ich das Ganze so nehme, will er mir einen Arbeitsbereich D:\%USERNAME%\workspace einrichten. %USERNAME% wird nicht durch dessen Inhalt ersetzt..

    Ich benötige nun eine Möglichkeit, den String zu bearbeiten. Mein erster Ansatz, in Ähnlicher Form, wie

    SET WORKSPACE=%WORKSPACE:<USERNAME>='echo %USERNAME%'%
    

    und auch zahlreiche ähnliche Ansätze funktionieren nicht.

    Hat jemand eine Idee, wie ich jetzt den Benutzernamen ersetzt kriege?

    tHx
    DjR



  • Hallo,

    mein try-and-error-Ergebnis:

    @echo off
    
    REM dynamische Ersetzung von Variablen aktivieren (!var!-Notation)
    SETLOCAL ENABLEDELAYEDEXPANSION
    
    FOR /F "eol=# tokens=1* delims== " %%a In (eclipse.conf) DO (
       CALL SET tempvar=%%a
       ECHO Erweitert:!tempvar!
    )
    
    ENDLOCAL
    

    MfG,

    Probe-Nutzer



  • die delayedexpansion fehlte mir! thx 🙂


Anmelden zum Antworten