Schleife und suchen ersetzen

Mitglied: SBiesterfeldt

SBiesterfeldt (Level 1)

13.04.2010 um 11:25 Uhr, 3454 Aufrufe, 4 Kommentare

Ich habe einen Code, möchte jedoch in mehreren Dateien nacheinander suchen&ersetzen

Hallo,

ich habe den folgenden Code:

01.
@echo off & setlocal enabledelayedexpansion
02.
title NVP Design
03.
cls
04.
color 1f
05.

06.
set coredrive="D:\Sascha\portal.war\core"
07.
set classicdrive="D:\Sascha\portal.war\defaultStyleFamily\classic"
08.
set litedrive="D:\Sascha\portal.war\defaultStyleFamily\lite"
09.
set rootdrive="D:\Sascha\portal.war"
10.

11.
set Datei1=%coredrive%\sideMenu.css
12.
set Datei2=%coredrive%\sideMenu.jsp
13.
set Datei3=%classicdrive%\portalMyPage.css
es sind ca. 50 Dateien, alternativ wären es nur *.css und *.jsp und *.txt Dateien

01.
rem ########################################################################################################################################
02.
:start
03.

04.
	title NVP Design
05.
	cls
06.
	echo.
07.
	echo.
08.
	echo                  =============== NVP Design ================
09.
	echo                  *                                         *
10.
	echo                  *  1 - DUNKEL                             *
11.
	echo                  *  2 - HELL                               *
12.
	echo                  *  3 - HINTERGRUND                        *
13.
	echo                  *  4 - Companyname change                 *
14.
	echo                  *  5 - About SQLMenu ^& Disclaimers        *
15.
	echo                  *  x - Exit                               *
16.
	echo                  *                                         *
17.
	echo                  ===========================================
18.
	echo                         Ctrl+C at any time will abort
19.
	echo.
20.
	echo.
21.
	echo                     Select the type of SQL command to run
22.
	echo.
23.
	set /p sqltype=                            Your selection: 
24.

25.
	if '%sqltype%'=='1' goto DUNKEL
26.
	if '%sqltype%'=='2' goto HELL
27.
	if '%sqltype%'=='3' goto HINTERGRUND
28.
	if '%sqltype%'=='4' goto COMPANY
29.
	if '%sqltype%'=='5' goto ABOUT
30.
	if '%sqltype%'=='x' exit
31.
	if '%sqltype%'=='X' exit
32.

33.
	
34.
	rem (else)
35.
	echo.
36.
	echo                              ---INVALID ENTRY---
37.
	echo.
38.
	pause
39.
	goto start
Hier beginnt der erste Suchen teil der aber auf alle Dateien bzw. Dateitypen gehen soll.

01.
rem ########################################################################################################################################
02.
:DUNKEL 
03.

04.
set /p NewColor= Neue Farbe in HEX (ohne #):
05.

06.
set "Datei1=%Datei1%"
07.
set "t=Temp.tmp"  
08.

09.
set "Suchen1=00285C" 
10.
set "Ersetzen1=%NewColor%" 
11.
 
12.
if exist "%t%" del "%t%" 
13.
for /f "delims=" %%i in ('findstr /n $ "%Datei1%"') do set "Line=%%i" & call :ProcessLine 
14.
move "%t%" "%Datei1%" 
15.
goto :done 
16.
 
17.
:ProcessLine 
18.
for /f "tokens=1* delims=:" %%a in ("%Line%") do set "L=%%b" 
19.
if not defined L >>"%t%" echo\& goto :eof 
20.
set WriteLine=!L:%Suchen1%=%Ersetzen1%!
21.
>>"%t%" echo !WriteLine! 
22.
goto :eof  
23.
Hier ist nur noch das Ende verarbeitet.
01.
rem ########################################################################################################################################
02.
:done
03.

04.
	echo.
05.
	echo.
06.
	echo.
07.
	echo  ====================================================================== 
08.
	echo.
09.
	echo   Thank you for using SQLMenu.  The selected task has been completed. 
10.
	echo.
11.
	echo              M - Main Menu (SQLMenu Begin Screen) 
12.
	echo              X - Exit. 
13.
	echo.
14.
	echo  ====================================================================== 
15.
	echo. 
16.
	echo.
17.
	set /p getputagain=                              Your selection: 
18.

19.
	if '%getputagain%'=='m' goto start
20.
	if '%getputagain%'=='M' goto start
21.
	if '%getputagain%'=='x' exit
22.
	if '%getputagain%'=='X' exit
23.

24.
	rem (else)
25.
	echo.
26.
	echo                              ---INVALID ENTRY---
27.
	echo.
28.
	pause
29.
Kann mir jemand helfen hier eine Schleife zu entwickeln die auf die Dateien bzw. die Typen die Definiert sind suchen und ersetzen?

Vielen Dank im Voraus
cls
goto done
Mitglied: LotPings
13.04.2010 um 12:08 Uhr
Hallo SBiesterfeldt,

ohne deine Vorgeschichte zu kennen ist deine Fragestellung viel zu lang und zu unklar um dir überhaupt helfen zu können/wollen.

Mir ist nicht klar womit du ein Problem hast.

Gruß
LotPings
Mitglied: SBiesterfeldt
13.04.2010 um 12:11 Uhr
Hallo LotPings,

ich möchte in mehreren Dateien (*.txt, *.css und *jsp) nach bestimmten begriffen suchen und diese mit einem Benutzerdefinierten Wert ersetzen.

Beispiel
Suchen1=00285C
Ersetzen1=%NewColor%

Suchen2=155527
Ersetzen3=%NewColor2%

usw.

Sorry, dachte je mehr Infos umso besser....

Gruß Sascha
Mitglied: LotPings
13.04.2010 um 15:25 Uhr
Hallo Sascha,

purer Batch-Code ist zum suchen inbesondere in HTML-Dateien schlecht geeignet, da die dort häufig vorkommenden Sonderzeichen <>& einer besonderen Behadlung bedürfen um nicht als Batch-Anweisungen für E/A-Umleitng bzw Befehlsverkettung interpretiert zu werden.

Wenn die Dateien außerdem noch anders kodiert sind (UTF_8) wirds ganz holperig. Mit CSS kannst du doch sowieso Farb eigensschaften abstrahieren.

Wenn das häufig vorkommt machst du etwas falsch; für gelegentliche Änderungen würd ich einen Editor einsetzen der Suchen Ersetzen über mehrere Dateien beherscht. AFAIK kann das z.Bsp. Notepad++.

Gruß
Lotpings
Mitglied: SBiesterfeldt
13.04.2010 um 15:32 Uhr
ja aber die Änderungen sollen in insgesamt 50 Dateien gemacht werden, und die Funktion via Editor ist etwas kompliziert.

Wie würde denn eine Lösung für TXT dateien aussehen?
Titel: Schleife und suchen ersetzen
Content-ID: 140475
Art des Inhalts: Frage
Ausgedruckt am: 26.05.2019 um 18:21:35 Uhr
URL: https://administrator.de/contentid/140475