matteop
Goto Top

VBScript anwenden um Verzeichniss Dateien editieren

In einem Verzeichnis wo mehrere htm, xml Dateien vorhanden sind mit folgenden Namen:

slidexxx.* ; masterxxx.*, usw bräuchte ich im allen slidexxx.htm Datein eine Änderung vornehemen:

target="_parent" onclick="window.event.cancelBubble=true;" style='position:
zu
target="_blank" onclick="window.event.cancelBubble=true;" style='position:

Bin apsoluter Anfänger dafür.
Ich ersuche aber das WBScript mir falls möglich rasch mir anbitten.

Danke im Voraus für Hilfe!

Content-Key: 232290

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

Printed on: April 25, 2024 at 16:04 o'clock

Member: colinardo
colinardo Mar 11, 2014 updated at 12:26:58 (UTC)
Goto Top
Guten Tag matteop, Willkommen im Forum!
Bin apsoluter Anfänger dafür.
Ich ersuche aber das WBScript mir falls möglich rasch mir anbitten.
[OT] Wow schon wieder Freitag ... sind die Schulen zu ? [/OT]
back-to-top1. Netiquette
back-to-top2. Rechtschreibung: heul ... WBScript ?? Waddehaddedudeda
back-to-top3. Suchfunktion des Forums nutzen
(gab es hier schon x-mal die Frage / aber bei der Rechtschreibung kein Wunder das du nichts findest)

back-to-top4. Beispiel (Kommentare im Code)
'Ordner mit den Dateien  
Const strFolder = "C:\Suchordner"  
'Erweiterungen der Dateien die durchsucht werden sollen  
arrFileExtensions = Array("htm")  
'String welcher gesucht wird  
Const strSearch = "target=""_parent"" onclick=""window.event.cancelBubble=true;"" style='position:"  
'String der den Suchstring ersetzt  
Const strReplace = "target=""_blank"" onclick=""window.event.cancelBubble=true;"" style='position:"  

intFileEditCounter = 0
Set fso = WScript.CreateObject("Scripting.Filesystemobject")  
Set rootFolder = fso.GetFolder(strFolder)
'Funktion zum durchsuchen aufrufen, wenn auch Dateien in Unterordnern durchsucht   
'werden sollen muss der zweite Parameter auf 'True' gesetzt werden  
parseFolder rootFolder, False
Set fso = Nothing
WScript.Echo "Suchen und Ersetzen wurde abgeschlossen!" & vbNewLine & "In " & intFileEditCounter & " Datei(en) wurden Ersetzungen vorgenommen!"  

Function parseFolder(strFldr,boolRecursion)
	For each file In strFldr.Files
		For i = 0 To UBound(arrFileExtensions)
			If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) And Left(file.Name,5) = "slide" Then  
				Set f = fso.OpenTextFile(file.Path,1)
				If Not f.AtEndOfStream Then
					strContent = f.ReadAll()
					f.Close
					strNewContent = Replace(strContent,strSearch,strReplace,1,-1,vbTextCompare)
					If strContent <> strNewContent Then
						Set f = fso.OpenTextFile(file.Path,2)
						f.Write(strNewContent)
						f.Close
						intFileEditCounter = intFileEditCounter + 1
					End If
				Else
					f.Close
				End if
				Exit For
			End If
		Next
	Next
	
	If boolRecursion Then
		For Each subFolder in strFldr.SubFolders
			parseFolder subFolder, True
		Next
	End If
End Function
p.s. einen Anfängerkurs können wir hier leider nicht in jedem Thread geben ... dafür gibt es diese Seiten hier:

back-to-topVBA/VBS/WSH/Office Developer Referenzen

Grüße Uwe
Member: matteop
matteop Mar 11, 2014 at 13:40:20 (UTC)
Goto Top
Hallo,

Vielen Dank für prompte Rückmeldung.
Das Skript funktioniert perfekt.....
Eine Frage vieleicht noch:
Wie wird Skript ausgeführt unabhängig von Verzeichniss?

Dh. Nur Skript kopieren in Verzeichniss wo Änderungen in .htm file's notwendig sind und ausführen.
Damit sollte Verzeichniss in .vbs Script nicht geändert werden.


Mit freundlichen Grüßen,
matteop
Member: colinardo
Solution colinardo Mar 11, 2014 updated at 14:24:08 (UTC)
Goto Top
Set fso = WScript.CreateObject("Scripting.Filesystemobject")  
'Ordner mit den Dateien = Ordner in dem sich das Script befindet  
strFolder = fso.GetParentFolderName(WScript.ScriptFullName)
'Erweiterungen der Dateien die durchsucht werden sollen  
arrFileExtensions = Array("htm")  
'String welcher gesucht wird  
Const strSearch = "target=""_parent"" onclick=""window.event.cancelBubble=true;"" style='position:"  
'String der den Suchstring ersetzt  
Const strReplace = "target=""_blank"" onclick=""window.event.cancelBubble=true;"" style='position:"  
intFileEditCounter = 0
Set rootFolder = fso.GetFolder(strFolder)
'Funktion zum durchsuchen aufrufen, wenn auch Dateien in Unterordnern durchsucht   
'werden sollen muss der zweite Parameter auf 'True' gesetzt werden  
parseFolder rootFolder, False
Set fso = Nothing
WScript.Echo "Suchen und Ersetzen wurde abgeschlossen!" & vbNewLine & "In " & intFileEditCounter & " Datei(en) wurden Ersetzungen vorgenommen!"  

Function parseFolder(strFldr,boolRecursion)
	For each file In strFldr.Files
		For i = 0 To UBound(arrFileExtensions)
			If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) And Left(file.Name,5) = "slide" Then  
				Set f = fso.OpenTextFile(file.Path,1)
				If Not f.AtEndOfStream Then
					strContent = f.ReadAll()
					f.Close
					strNewContent = Replace(strContent,strSearch,strReplace,1,-1,vbTextCompare)
					If strContent <> strNewContent Then
						Set f = fso.OpenTextFile(file.Path,2)
						f.Write(strNewContent)
						f.Close
						intFileEditCounter = intFileEditCounter + 1
					End If
				Else
					f.Close
				End if
				Exit For
			End If
		Next
	Next
	
	If boolRecursion Then
		For Each subFolder in strFldr.SubFolders
			parseFolder subFolder, True
		Next
	End If
End Function
Member: matteop
matteop Mar 11, 2014 at 14:24:53 (UTC)
Goto Top
Hallo,

Perfekt!

LG,
matteop