duffy6
Goto Top

In Datei mit bestimmter Endung Text ersetzen (mit Rechtsklick)

Batch Endung Ersetzen

Hallo zusammen,

ich möchte folgendes tun:

In Dateien mit einem bestimmten Dateityp (*.STP) möchte ich das Vorkommen eines bestimmten Textes ("ROT") durch einen anderen Text ("BLAU") ersetzen.

Das ganze soll am besten unter Windows XP mit Rechtsklick auf (nur) diesen Dateityp möglich sein.
Also einen Filter in der Batchdatei, dass diese nur ausgeführt wird, wenn der Dateityp ("STP") stimmt.

Wie könnte denn der Batch-Code dazu aussehen?

Danke für Eure Hilfe

duffy6

Content-Key: 137402

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

Printed on: April 23, 2024 at 10:04 o'clock

Member: Snowman25
Snowman25 Mar 04, 2010 at 12:06:59 (UTC)
Goto Top
Hallo @duffy6

if exist findlines.line (
	:doesexist
	Echo Achtung. Zeilennummern-Datei bereits vorhanden!
	Echo Löschen? (Y/N)
	set /p delline=
	if /I X%delline%==Xy (
		del findlines.line
		goto start
	)
	if /I X%delline%==Xn goto start
	goto doesexist
)
:start
if X%~x1==X.stp (
	more %1|findstr /N ROT>findlines.line
) else (
	Echo %1 ist keine .STP-Datei!
)

Ist mal ein Anfang. Hauptteil zum ersetzen fehlt noch...

Gruß
Snow
Member: bastla
bastla Mar 04, 2010, updated at Oct 18, 2012 at 16:41:19 (UTC)
Goto Top
Hallo duffy6!

Derartige Fragen kommen hier ja ganz selten face-wink - aber wenigstens einmal hatten wir doch schon etwas Ähnliches:Suchen und Ersetzen per Batch (variable Dateinamen, feste Strings) ...

Grüße
bastla
Member: Snowman25
Snowman25 Mar 04, 2010 at 13:15:58 (UTC)
Goto Top
Wenn der TO AEdit verwenden möchte, dann besteht der hauptteil nur noch aus einem Aufruf von AEdit mit dem Kompletten Dateipfad...
also aedit %~f1 u.s.w..
Member: bastla
bastla Mar 04, 2010, updated at Oct 18, 2012 at 16:41:20 (UTC)
Goto Top
@Snowman25
Wenn der TO AEdit verwenden möchte ...
Ev auch eine Option; es sollte aber eigentlich auch der Batch im verlinkten Beitrag genügen ...face-wink

... oder, um es kurz zu machen, die angepasste Version davon:
@echo off & setlocal
set "Ordner=D:\Files"  
set "Typ=STP"  
set "Von=ROT"  
set "Nach=BLAU"  

set R=%temp%\Replace.vbs
>%R%  echo F=WScript.Arguments(0):Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(F).ReadAll  
>>%R% echo fso.CreateTextFile(F,True).Write Replace(T,"%Von%","%Nach%")  

for %%f in ("%Ordner%\*.%Typ%") do cscript //nologo %R% "%%f"  
Zur Sicherheit auch hier nochmals der Hinweis: Es wird (ohne Erstellung einer Sicherheitskopie) direkt die jeweilige Datei verändert!

Grüße
bastla
Member: Snowman25
Snowman25 Mar 04, 2010 at 15:09:13 (UTC)
Goto Top
Oder so. Letztendlich muss man dann am ende halt noch einen entsprechenden Eintrag in die Registry schreiben, damit die batch im Kontextmenü angezeigt wird uswusf... Findet sich in 2 Minuten über Google
Member: bastla
bastla Mar 04, 2010, updated at Oct 18, 2012 at 16:41:20 (UTC)
Goto Top
... bzw im Ansatz gleich nebenan - dann kann auch noch die Schleife wegfallen und der Batch reduziert sich auf etwas in der Art:
@echo off & setlocal
if /i "%~x1" neq ".STP" goto :eof  
set "Von=ROT"   
set "Nach=BLAU"   

set R=%temp%\Replace.vbs
>%R%  echo F=WScript.Arguments(0):Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(F).ReadAll  
>>%R% echo fso.CreateTextFile(F,True).Write Replace(T,"%Von%","%Nach%")  
cscript //nologo %R% %1
Grüße
bastla