Inhalte in Dateienin einem Verzeichniss suchen und ersetzen
Hallo,
ich habe ein verzeichniss, in dem ca 60 dateien liegen (txt)
nun möchte ich, dass das die dateien nacheinander durchsucht werden und wenn in einer datei der wert gefunden wird, der wert durch einen anderen ersetzt wird und zusätzlich der dateiname (nicht das attribut) als variable zur weitern bearbeitung übernommen wird.
ca so:
wenn der dateiname "test1.txt" ist und der wert "123" darin existiert soll "123" durch "456" ersetzt werden und das "test1" in eine datei augegeben wird.
dann geht das mit der nächsten wahrscheinlich "test2.txt" weiter und "test2"soll auch dann ausgegeben werden in die datei.
bis jetzt habe ich das nur so, dass ich eine datei angebe (name wird eingegeben) und er ändert es dann so:
ihr könnt bestimmt helfen
danke
ich habe ein verzeichniss, in dem ca 60 dateien liegen (txt)
nun möchte ich, dass das die dateien nacheinander durchsucht werden und wenn in einer datei der wert gefunden wird, der wert durch einen anderen ersetzt wird und zusätzlich der dateiname (nicht das attribut) als variable zur weitern bearbeitung übernommen wird.
ca so:
wenn der dateiname "test1.txt" ist und der wert "123" darin existiert soll "123" durch "456" ersetzt werden und das "test1" in eine datei augegeben wird.
dann geht das mit der nächsten wahrscheinlich "test2.txt" weiter und "test2"soll auch dann ausgegeben werden in die datei.
bis jetzt habe ich das nur so, dass ich eine datei angebe (name wird eingegeben) und er ändert es dann so:
@echo off & setlocal enabledelayedexpansion
set /p datei="Bitte Datei ohne Endung angeben: "
set /p PWALT="Bitte altes Passwort eingeben: "
set /p PWNEU="Neues Passwort bitte: "
set pfad=c:\test
set aus=c:\test\aus
set t=C:\temp\temp.tmp
if exist "%t%" del "%t%"
for /f "usebackq delims=" %%i in ("%pfad%\%datei%.txt") do set "Line=%%i" & set Line=!Line:%PWALT%=%PWNEU%! & echo !Line!>> "%t%"
move %t% %aus%
echo %datei% >> c:\test\bearbeitet.rtf
del /q "%t%"
ihr könnt bestimmt helfen
danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 150222
Url: https://administrator.de/contentid/150222
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
5 Kommentare
Neuester Kommentar
Moin connecthor,
temp brauchste eigentlich nicht
wenn im Text Ausrufezeichen enthalten sind ist die VerzögerteVariablenErweiterung nicht vorher Vorteilhaft
wenn Die zu ersetzende Zeichenfolge Ausrufezeichen beinhaltet ist die VerzögerteVariablenErweiterung erst nach der Ersetzung von Vorteil - oder Du Streust ein endlocal ein und die Variable wird danach wieder mit Ausrufezeichen dargestellt, aber man bekommt keine Variablen innerhalb von For-/If- Klammern bzw einer BefehlsZeile Erweitert dargestellt
in etwa so
[Edit] Umleitung in neue Datei verschoben auf Vorletzte Zeile [/Edit]
Gruß Phil
temp brauchste eigentlich nicht
wenn im Text Ausrufezeichen enthalten sind ist die VerzögerteVariablenErweiterung nicht vorher Vorteilhaft
wenn Die zu ersetzende Zeichenfolge Ausrufezeichen beinhaltet ist die VerzögerteVariablenErweiterung erst nach der Ersetzung von Vorteil - oder Du Streust ein endlocal ein und die Variable wird danach wieder mit Ausrufezeichen dargestellt, aber man bekommt keine Variablen innerhalb von For-/If- Klammern bzw einer BefehlsZeile Erweitert dargestellt
in etwa so
@echo off
set /p PWALT="Bitte altes Passwort eingeben: "
set /p PWNeu=Neues Passwort bitte: "
set "pfad=c:\test"
set "aus=c:\test\aus"
pushD "%pfad%"
for %%i in (*.txt) do (set "OK="
for /f "usebackq delims=" %%j in ("%%i") do (set "Line=%%j"
call set "LineOUT=%%Line:%PWALT%=%PWNEU%%%
setlocal enabledalayedexpansion
echo !LineOUT!
if not "!Line!" == "!LineOUT!" set "OK=1"
(for /f %%k in ("!OK!") do endlocal&set "OK=%%k")||endlocal
)
if defined OK echo %%i>> c:\test\bearbeitet.rtf
)>"%aus%\%%i"
popD
[Edit] Umleitung in neue Datei verschoben auf Vorletzte Zeile [/Edit]
Gruß Phil
Hallo connecthor!
Dann wickel eben noch ein Schleifchen herum - ungetestet etwa so:
BTW: Dass bestimmte Sonderzeichen (<|>^) im Passwort zu unerwünschten Effekten führen können, hast Du ja sicher selbst schon gemerkt ...
[Edit] Funktionsweise "
Grüße
bastla
Dann wickel eben noch ein Schleifchen herum - ungetestet etwa so:
@echo off & setlocal enabledelayedexpansion
set /p PWALT="Bitte altes Passwort eingeben: "
set /p PWNEU="Neues Passwort bitte: "
set pfad=c:\test
set aus=c:\test\aus
set t=C:\temp\temp.tmp
if exist "%t%" del "%t%"
for /f "delims=" %%d in ('dir /b "%pfad%\*.txt"') do (
for /f "usebackq delims=" %%i in ("%pfad%\%%d") do set "Line=%%i" & set "Line=!Line:%PWALT%=%PWNEU%!" & echo !Line!>> "%t%"
move "%t%" "%aus%\%%d"
echo %%~nd >> c:\test\bearbeitet.rtf
)
[Edit] Funktionsweise "
move
"-gerecht gemacht [/Edit]Grüße
bastla