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-ID: 137402

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

Ausgedruckt am: 25.11.2024 um 02:11 Uhr

Snowman25
Snowman25 04.03.2010 um 13:06:59 Uhr
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
bastla
bastla 04.03.2010, aktualisiert am 18.10.2012 um 18:41:19 Uhr
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
Snowman25
Snowman25 04.03.2010 um 14:15:58 Uhr
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..
bastla
bastla 04.03.2010, aktualisiert am 18.10.2012 um 18:41:20 Uhr
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
Snowman25
Snowman25 04.03.2010 um 16:09:13 Uhr
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
bastla
bastla 04.03.2010, aktualisiert am 18.10.2012 um 18:41:20 Uhr
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