batch programmieren



  • Hallo alle zusammen,

    ich habe leider ein Problem und finde einfach keine Lösung . Ich bin mal gespannt, ob mir hier jemand weiterhelfen kann.
    Mein Skript soll folgende Arbeit erledigen:
    eine Zeile,die mit DIRECTORY ....... anfängt, finden und
    ersetzen durch DIRECTORY C:\test

    SET "cfg=D:\test\test.cfg"
    SET  "Varl=C:\test "
    echo %VAR%
    SET "DIRECTORY=DIRECTORY"
    FOR /f "delims=  " %%i IN ('FINDSTR  /n /i /b   "%DIRECTORY%" "%cfg%"') do (
    SET ganze_zeile=%%i
    SET ganze_zeile=%VAR% >> %cfg%
    )
    


  • Ich würde dir ja gerne helfen, aber irgendetwas stimmt da nicht:

    @ECHO OFF
    IF ("DIRECTORY"=="DIRECTORY") (
      ECHO Alles klar!
    ) ELSE (
      ECHO Ehm.. na ja.. WTF?
    )
    

    Was mache ich falsch? 😃

    Aha! Keine Klammern:

    @ECHO OFF
    SET file=config.txt
    SET outfile=out.txt
    SET mydir=C:\test
    SET keyword=DIRECTORY
    
    FOR /F "delims=  " %%I IN (%file%) DO (
      SET line=%%I
      call :sub
    )
    GOTO :EOF
    
    :sub
    if "%line:~0,9%"=="%keyword%" (
      ECHO "%keyword% %mydir%"
    ) else (
      ECHO "%line%"
    )
    GOTO :EOF
    

    Mit Zeile 14 bin ich noch sehr unglücklich, da man sich die Variable "keyword" dann auch irgendwie schenken kann. Na ja, vielleicht hilft's dir ja.



  • cooky451 schrieb:

    @ECHO OFF
    SET file=config.txt
    SET outfile=out.txt
    SET mydir=C:\test
    SET keyword=DIRECTORY
    
    FOR /F "delims=  " %%I IN (%file%) DO (
      SET line=%%I
      call :sub
    )
    GOTO :EOF
    
    :sub
    if "%line:~0,9%"=="%keyword%" (
      ECHO "%keyword% %mydir%"
    ) else (
      ECHO "%line%"
    )
    GOTO :EOF
    

    Mit Zeile 14 bin ich noch sehr unglücklich, da man sich die Variable "keyword" dann auch irgendwie schenken kann. Na ja, vielleicht hilft's dir ja.

    Vielen herzlichen Dank!! Aber ich habe einen Problem..In Zeile 15 setzt er die geänderte Zeile im cfg datei irgend wie nicht..Also Datei bleibt immer noch gleich.Der sollte eigentlich statt die alte directory (nach Keyword) die neue schreiben 😞



  • Ich weiß nicht, ob man Zeilen direkt ändern kann. Aber eine simple Lösung wäre es, die Ausgabe dieser Datei umzuleiten und die Dateien dann zu tauschen.

    @ECHO OFF
    SET file=config.txt
    SET outfile=out.txt
    SET mydir=C:\test
    SET keyword=DIRECTORY
    
    DEL "%outfile%"
    
    FOR /F "delims=  " %%I IN (%file%) DO (
      SET line=%%I
      call :sub
    )
    REM --- hier könnte auch ein DEL stehen! ---
    RENAME "%file%" "temp.txt"   
    RENAME "%outfile%" "%file%"
    GOTO :EOF
    
    :sub
    if "%line:~0,9%"=="%keyword%" (
      ECHO "%keyword% %mydir%">>%outfile%
    ) else (
      ECHO "%line%">>%outfile%
    )
    GOTO :EOF
    

Log in to reply