Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Wort in mehreren Dokumenten durch Textabschnitt ersetzen

Frage Microsoft Windows Tools

Mitglied: Rookie-Doo

Rookie-Doo (Level 1) - Jetzt verbinden

04.06.2008, aktualisiert 07.06.2008, 4233 Aufrufe, 11 Kommentare

Hallo,

ja, ich weiß, es gibt unzählige Lösungen, die ein Wort durch eine Textphrase ersetzen lassen können, keine Frage. Allerdings suche ich etwas für folgendes Problem:

Ich möchte in einer recht unmfangreichen Zahl von html-Dokumenten vor den <html>-Tag die Doctype-Deklarierung setzen lassen - mit zwei Zweilenumbrüchen Abstand dazwischen.
Das gleiche an den Dokumentenenden für die Einfügung von GoogleAnalytics-tags.

Also nicht nur eine Zeichenfolge durch eine Zeichenfolge ersetzen lassen, sondern eine Zeichenfolge durch eine Zeichenfolge mit einem bestimmten mehrzeiligen Format!

Kennt jemand eine Methode für dieses Problem?

Gruß und vielen Dank im Voraus
rkd
Mitglied: bastla
04.06.2008 um 21:36 Uhr
Hallo Rookie-Doo!

Warum stellst Du nicht gleich konkret mit einer Gegenüberstellung "Vorher" - "Nachher" (der relevanten Teile) dar, welche Änderung Du durchführen möchtest?

Dann zeigt sich hoffentlich, ob es vielleicht schon genügen würde, jeweils einige Zeilen an Anfang und Ende der vorhandenen Dateien zu setzen ...

Grüße
bastla
Bitte warten ..
Mitglied: Rookie-Doo
04.06.2008 um 21:46 Uhr
Hallo bastla,

erstmal vielen Dank für die schnelle Antwort.

Weil ich hoffe, einen Universalmethode zu erfahren, damit ich ähnliche Probleme in Zukunft damit ebenfalls angehen kann.

Bezüglich des Doctypes-Tag trifft "Anfang der Datei" zu, allerdings schon nicht mehr bei dem GoogleAnalytics-Tag.

Gruß
rkd
Bitte warten ..
Mitglied: bastla
04.06.2008 um 22:41 Uhr
Hallo Rookie-Doo!

Clevere Vorgangsweise - so kann ich das Testen des folgenden Vorschlages guten Gewissens Dir überlassen ...

01.
'TagsErsetzen.vbs 
02.
Pfad = "D:\Dein Ordner mit vielen html-Dateien" 
03.
Typ = LCase("html") 
04.
 
05.
Von =  Array("<html>", _ 
06.
             "</Tag, nach welchem GoogleAnalytics-Tag eingefügt werden soll>") 
07.
			 
08.
Nach = Array("<Dein DocType>" & vbCrLF & vbCrLF & vbCrLF & "<html>", _ 
09.
             "</Tag, nach welchem GoogleAnalytics-Tag eingefügt werden soll>" & "<GoogleAnalytics-Tag ...... />") 
10.
 
11.
Set fso=CreateObject("Scripting.FileSystemObject") 
12.
For Each File In fso.GetFolder(Pfad).Files 
13.
    If LCase(fso.GetExtensionName(File.Path)) = Typ Then 
14.
        Text = fso.OpenTextFile(File.Path).ReadAll 
15.
        For i = 0 To UBound(Von) 
16.
            Text = Replace(Text, Von(i), Nach(i), 1, -1, 1) 
17.
        Next 
18.
        fso.OpenTextFile(File.Path, 2, True).Write Text 
19.
	End If 
20.
Next
Dieses VBScript ist mit dem Typ ".vbs" zu speichern und bearbeitet alle dem angegebenen Typ entsprechenden Dateien (im Beispiel: "*.html") des vorgegebenen Pfades. Die Ersetzung wird "in der Datei" vorgenommen (die neue Version überschreibt die alte Fassung), daher nur mit Kopien testen!

Starten kannst Du das Script aus dem Explorer per Doppelklick, da es keine Argumente erwartet.

Ersetzt wird jeweils der in "Von" angegebene Text durch dessen zeilenmäßige Entsprechung in "Nach" - dadurch ist die Anzahl variabel (was ja in Deinem Sinne sein sollte). Im Beispiel oben sind demnach 2 Paare von "Such-/Ersetzungstexten" angegeben.

Die Schreibweise dafür: Jeder Text steht unter Anführungszeichen und ist vom nächsten Text durch ein Komma getrennt. Übersichtlicher wird es, wenn zusätzlich ein Zeilenumbruch erfolgt - diesen erreichst Du über " _" am Ende der Zeile. Nach dem letzten Text endet die Zeile mit einer schließenden Klammer.

Sonderzeichen, wie der Zeilenumbruch "vbCrLF", können durch Verkettung per "&" an die konstanten Texte angefügt werden. Dies gilt auch für enthaltene Anführungszeichen, welche Du entweder durch Verdoppelung oder mit der Schreibweise Chr(34) angeben kannst - zB wäre für:
01.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
02.
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html>
entweder
01.
Nach = Array("<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN""" & vbCrLF & "     ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"">" & vbCrLF & vbCrLF & vbCrLF & "<html>"
oder
01.
Nach = Array("<!DOCTYPE html PUBLIC " & Chr(34) & "-//W3C//DTD XHTML 1.0 Strict//EN" & Chr(34) & vbCrLF & "     " & Chr(34) & "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" & Chr(34) &">" & vbCrLF & vbCrLF & vbCrLF & "<html>"
zu schreiben.

Erst danach käme (bei Bedarf) als Trennung von der nächsten Zeile (um noch weitere Ersetzungstexte angeben zu können):
01.
, _
oder die schließende Klammer.

Gesucht wird "case-insensitiv", ersetzt wird entsprechend dem eingegebenen Text - aus "<HTML>" würden durch die Ersetzung demnach 3 zusätzliche Zeilen vorneweg und "<html>".

Grüße
bastla
Bitte warten ..
Mitglied: Rookie-Doo
04.06.2008 um 23:20 Uhr
Boah, krass danke!

Teste ich gleich morgen. Ersetzt das Script auch die Dateien in den Unterverzeichnissen des angegebenen Pfades? Das wäre nämlich noch überaus schön.

Gruß, vielen dank und gn8!
Bitte warten ..
Mitglied: Rookie-Doo
07.06.2008 um 17:52 Uhr
Bastla? Ist es auch möglich den Text nicht nach, sondern vor einem Tag ersetzen zu lassen?

Bezüglich des Google-Tags würde ich nämlich diesen gerne vor dem </body>-Tag erscheinen lassen.
Bitte warten ..
Mitglied: bastla
07.06.2008 um 18:01 Uhr
Hallo Rookie-Doo!

Ist es auch möglich den Text nicht nach, sondern vor einem Tag ersetzen zu lassen?
Es wird generell nicht vor oder nach, sondern einfach der gesamte Suchtext (egal ob Tag oder anderes) ersetzt - daher steht auch jeweils der in "Vor" angegebene zu ersetzende Text dann wieder in "Nach" (an der gewünschten Position).

Kurzfasssung: Ändere in "Nach" einfach für die zweite Zeile die Reihenfolge, sodass dort dann eben
01.
... 
02.
             "<GoogleAnalytics-Tag ...... />" & "</body>")
steht.

Grüße
bastla
Bitte warten ..
Mitglied: Rookie-Doo
07.06.2008 um 18:07 Uhr
Achja, logisch. Sry beim "Programmieren" merke ich einfach meine mathematisch-logischen Defizite. Hab's jetzt aber verstanden und bin schon eifrig am Testen, bekomme jedoch leder eine Syntaxfehlermeldung. Hat sicher irgendwas mit den Leerzeichen zu tun, gucke nochmal alles durch.
Bitte warten ..
Mitglied: Rookie-Doo
07.06.2008 um 18:23 Uhr
JUHUU, es funktioniert!! Vielen Dank!

Gibt allerdings noch ein Problem:

1. Wie kann ich das Sckript anweisen, auch die Unterverzeichnisse des angegebenen Verzeichnisses mit einzubeziehen?

2. Kann man das Skript anweisen, html- und htm-Dateien zu durchforsten?

3. Und da fällt mir jetzt spontan noch ein Problem ein: Ich habe bei Übernahme des betreffenden Websitenprojektes gemerkt, dass einige htm(l)-Dateien die Doctype-Deklaration enthalten. Ist es sehr kompliziert, das Skript bei diesen Dateien lediglich den Google-Tag setzen zu lassen?

Vielen Dank jedenfalls für die bisherige Hilfe, erspart mir etliche Stunden Arbeit!
Bitte warten ..
Mitglied: bastla
07.06.2008 um 18:58 Uhr
Hallo Rookie-Doo!

Das sähe dann so aus:
01.
'TagsErsetzen.vbs 
02.
Pfad = "D:\Dein Ordner mit vielen html-Dateien" 
03.
Typ = LCase("htm") 
04.
 
05.
Von =  Array("<html>", _ 
06.
    "</body>") 
07.
			 
08.
Nach = Array("<Dein DocType>" & vbCrLF & vbCrLF & vbCrLF & "<html>", _ 
09.
    "<GoogleAnalytics-Tag ...... />" & "</body>") 
10.
 
11.
LenTyp = Len(Typ) 
12.
Set fso=CreateObject("Scripting.FileSystemObject") 
13.
DoSubFolders fso.GetFolder(Pfad) 
14.
WScript.Echo "Fertig." 
15.
 
16.
Sub DoSubFolders(Folder) 
17.
For Each File In fso.GetFolder(Folder).Files 
18.
    If Left(LCase(fso.GetExtensionName(File.Path)), LenTyp) = Typ Then 
19.
        Text = fso.OpenTextFile(File.Path).ReadAll 
20.
        AbText = 0 
21.
        If InStr(1, Text, "<!DOCTYPE", vbTextCompare) Then AbText = 1 
22.
        For i = AbText To UBound(Von) 
23.
            Text = Replace(Text, Von(i), Nach(i), 1, -1, 1) 
24.
        Next 
25.
        fso.OpenTextFile(File.Path, 2, True).Write Text 
26.
    End If 
27.
Next 
28.
For Each SubFolder In Folder.SubFolders 
29.
    DoSubFolders SubFolder 
30.
Next 
31.
End Sub
Wenn in der Datei der in Zeile 21 angegebene Suchbegriff "<!DOCTYPE" (Groß- / Kleinschreibung egal) vorkommt, wird die erste in "Von" festgelegte Ersetzung übersprungen.

Grüße
bastla
Bitte warten ..
Mitglied: Rookie-Doo
07.06.2008 um 21:56 Uhr
Hat alles wunderbar und erstklassig geklappt, vielen vielen Dank bastla!
Bitte warten ..
Mitglied: BlubbBlubb17
05.07.2009 um 13:34 Uhr
Hallo,
dürfte ich das Tehma noch einmal aus der Versenkung holen?

Ich suche seit gestern auch nach einem script um alle html dokumente in einem Ordner gleich zu verändern und das oben beschriebene script scheint dafür ja ganz gut zu sein. (oder täusche ich mich? ich möchte bei allen dokumenten eine Tabelle mit einer anderen ersetzen)


Das Problem ist, dass das Script anscheinend doch eine ANweisung erwartet.
Ich erhalte immer den Fehler 800A04000.

Muss ich das Programm erst kompelieren, oder erst die entsprechenden vorher nachers Angaben im Quelltext angeben?

Grüße
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Mehrere Wörter ersetzen Powershell Skript
gelöst Frage von Beginner01Batch & Shell4 Kommentare

Hallo an die Gemeinde! Ich habe eine Textdatei, in der ich mehrere verteilte Wörter mittels Windows Powershell ersetzen möchte. ...

Grafik
Mehrere PDF-Dateien Wörtern durchsuchen
Frage von SprudiGrafik2 Kommentare

Liebe Community, wir bekommen von einer externen Firma in wiederkehrenden Abständen viele PDF-Dateien in einem Arbeitsordner zur Verfügung gestellt. ...

Batch & Shell
Text von zeile mit wort, bis ziele mit wort
gelöst Frage von SaintwolfBatch & Shell5 Kommentare

suche eine Batch die eine txt auswertet inhalt: text a text b text c Fehler fehler in KB4568792 text ...

Microsoft Office
Text in mehreren .docx suchen und ersetzen
gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Ich hoffe auf Antworten von Leuten, die genau das per Tool schon mal gemacht haben: Selektiere mehrere ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 12 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 15 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 16 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 19 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...