sbiesterfeldt
Goto Top

Schleife und suchen ersetzen

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

Hallo,

ich habe den folgenden Code:

@echo off & setlocal enabledelayedexpansion
title NVP Design
cls
color 1f

set coredrive="D:\Sascha\portal.war\core"  
set classicdrive="D:\Sascha\portal.war\defaultStyleFamily\classic"  
set litedrive="D:\Sascha\portal.war\defaultStyleFamily\lite"  
set rootdrive="D:\Sascha\portal.war"  

set Datei1=%coredrive%\sideMenu.css
set Datei2=%coredrive%\sideMenu.jsp
set Datei3=%classicdrive%\portalMyPage.css

es sind ca. 50 Dateien, alternativ wären es nur *.css und *.jsp und *.txt Dateien

rem ########################################################################################################################################
:start

	title NVP Design
	cls
	echo.
	echo.
	echo                  =============== NVP Design ================
	echo                  *                                         *
	echo                  *  1 - DUNKEL                             *
	echo                  *  2 - HELL                               *
	echo                  *  3 - HINTERGRUND                        *
	echo                  *  4 - Companyname change                 *
	echo                  *  5 - About SQLMenu ^& Disclaimers        *
	echo                  *  x - Exit                               *
	echo                  *                                         *
	echo                  ===========================================
	echo                         Ctrl+C at any time will abort
	echo.
	echo.
	echo                     Select the type of SQL command to run
	echo.
	set /p sqltype=                            Your selection: 

	if '%sqltype%'=='1' goto DUNKEL  
	if '%sqltype%'=='2' goto HELL  
	if '%sqltype%'=='3' goto HINTERGRUND  
	if '%sqltype%'=='4' goto COMPANY  
	if '%sqltype%'=='5' goto ABOUT  
	if '%sqltype%'=='x' exit  
	if '%sqltype%'=='X' exit  

	
	rem (else)
	echo.
	echo                              ---INVALID ENTRY---
	echo.
	pause
	goto start

Hier beginnt der erste Suchen teil der aber auf alle Dateien bzw. Dateitypen gehen soll.

rem ########################################################################################################################################
:DUNKEL 

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

set "Datei1=%Datei1%"  
set "t=Temp.tmp"    

set "Suchen1=00285C"   
set "Ersetzen1=%NewColor%"   
 
if exist "%t%" del "%t%"   
for /f "delims=" %%i in ('findstr /n $ "%Datei1%"') do set "Line=%%i" & call :ProcessLine   
move "%t%" "%Datei1%"   
goto :done 
 
:ProcessLine 
for /f "tokens=1* delims=:" %%a in ("%Line%") do set "L=%%b"   
if not defined L >>"%t%" echo\& goto :eof   
set WriteLine=!L:%Suchen1%=%Ersetzen1%!
>>"%t%" echo !WriteLine!   
goto :eof  

Hier ist nur noch das Ende verarbeitet.
rem ########################################################################################################################################
:done

	echo.
	echo.
	echo.
	echo  ====================================================================== 
	echo.
	echo   Thank you for using SQLMenu.  The selected task has been completed. 
	echo.
	echo              M - Main Menu (SQLMenu Begin Screen) 
	echo              X - Exit. 
	echo.
	echo  ====================================================================== 
	echo. 
	echo.
	set /p getputagain=                              Your selection: 

	if '%getputagain%'=='m' goto start  
	if '%getputagain%'=='M' goto start  
	if '%getputagain%'=='x' exit  
	if '%getputagain%'=='X' exit  

	rem (else)
	echo.
	echo                              ---INVALID ENTRY---
	echo.
	pause

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

Content-Key: 140475

Url: https://administrator.de/contentid/140475

Printed on: April 26, 2024 at 06:04 o'clock

Mitglied: 77559
77559 Apr 13, 2010 at 10:08:07 (UTC)
Goto Top
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
Member: SBiesterfeldt
SBiesterfeldt Apr 13, 2010 at 10:11:33 (UTC)
Goto Top
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: 77559
77559 Apr 13, 2010 at 13:25:59 (UTC)
Goto Top
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
Member: SBiesterfeldt
SBiesterfeldt Apr 13, 2010 at 13:32:28 (UTC)
Goto Top
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?