Batch Zeile suchen und ersetzen Variabler Pfad
Hallo,
ich stehe leider vor einem kleinen Problem was ich nicht in den Griff bekommen.
Ich möchte in mehreren Dateien, die in einem Ordner liegen (*.cfg) eine Zeile Ändern.
Das bekomme ich auch soweit hin, jedoch nur statisch und nicht variabel, wie ich es gerne nutzen würde.
Diesen Teil hätte ich gerne Variable, allerdings klappt es so wie ich es versucht habe nicht - stehe auf dem Schlauch
Evtl. stelle ich mich auch einfach zu dämlich an.
Wäre dankbar für Tips.
(Im Prinzip soll nur der Pfad von "N:\asd\" zu "D:\asd\" in den cfg Dateien geändert werden)
Gruß Jonas
ich stehe leider vor einem kleinen Problem was ich nicht in den Griff bekommen.
Ich möchte in mehreren Dateien, die in einem Ordner liegen (*.cfg) eine Zeile Ändern.
Das bekomme ich auch soweit hin, jedoch nur statisch und nicht variabel, wie ich es gerne nutzen würde.
set "Datei=D:\1\2\test.cfg"
set "Von=N:\asd"
set "Nach=D:\asd"
set "t=%temp%\text.tmp"
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%Von%=%Nach%! & echo !Line!>>"%t%"
move /y "%t%" "%Datei%
pause
set "Datei=D:\HICAD\profiles\h5x.cfg"
Diesen Teil hätte ich gerne Variable, allerdings klappt es so wie ich es versucht habe nicht - stehe auf dem Schlauch
Evtl. stelle ich mich auch einfach zu dämlich an.
Wäre dankbar für Tips.
(Im Prinzip soll nur der Pfad von "N:\asd\" zu "D:\asd\" in den cfg Dateien geändert werden)
Gruß Jonas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 358213
Url: https://administrator.de/forum/batch-zeile-suchen-und-ersetzen-variabler-pfad-358213.html
Ausgedruckt am: 21.04.2025 um 20:04 Uhr
6 Kommentare
Neuester Kommentar
Vermutlich so (ungetestet)
Steffen
@echo off &setlocal DisableDelayedExpansion
set "Folder=D:\HICAD\profiles"
set "Von=N:\asd"
set "Nach=D:\asd"
set "t=%temp%\text.tmp"
for %%h in ("%folder%\*.cfg") do (
>"%t%" (
for /f "usebackq delims=" %%i in ("%folder%\%%~h") do (
set "Line=%%i"
setlocal EnableDelayedExpansion
echo !Line:%Von%=%Nach%!
endlocal
)
)
move /y "%t%" "%folder%\%%~h"
)
Offensichtlich beinhaltet %%h bereits den kompletten Pfad.
Steffen
@echo off &setlocal DisableDelayedExpansion
set "Folder=D:\HICAD\profiles"
set "Von=N:\asd"
set "Nach=D:\asd"
set "t=%temp%\text.tmp"
for %%h in ("%folder%\*.cfg") do (
>"%t%" (
for /f "usebackq delims=" %%i in ("%%~h") do (
set "Line=%%i"
setlocal EnableDelayedExpansion
echo !Line:%Von%=%Nach%!
endlocal
)
)
move /y "%t%" "%%~h"
)
Ich denke eher du musst dein Konzept überdenken. Ich vermute eine Suche nach dem Schlüsselwort "app.gf.data.profile" ist das, was du eigentlich willst und dort den dazugehörigen Wert (was auch immer dort steht) durch "default;asdf;asdf" ersetzen.
Wieder ungetestet:
Steffen
Wieder ungetestet:
set "Folder=D:\HICAD\profiles"
set "key=app.gf.data.profile"
set "newval=default;asdf;asdf"
set "t=%temp%\text.tmp"
for %%h in ("%folder%\*.cfg") do (
>"%t%" (
for /f "usebackq tokens=1* delims==" %%i in ("%%~h") do (
set "begin=%%i"
set "oldval=%%j"
setlocal EnableDelayedExpansion
if defined oldval (
if "!begin!"=="!key!" (
echo(!begin!=!newval!
) else (
echo(!begin!=!oldval!
)
) else echo(!begin!
endlocal
)
)
move /y "%t%" "%%~h"
)