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:\testSET "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