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

Mitglied: Rookie-Doo

Rookie-Doo (Level 1) - Jetzt verbinden

04.06.2008, aktualisiert 07.06.2008, 4284 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

Textdatei (.txt) Wort für Wort auslesen per batch (Spaltenweise)

Frage von pdiddoBatch & Shell1 Kommentar

Hi, ich habe eine Textdatei (.txt). Diese hat mehrere Zeilen. Ich möchte diese gerne Spalte für Spalte auslesen, sodass ...

Microsoft Office

XLSX Dokument Formatierung

gelöst Frage von HanutaMicrosoft Office7 Kommentare

Hallo Zusammen, ich habe eine XLSX Datei, die von einem MAC Rechner gespeichert wird und anschließend von einem Windowsrechner ...

Batch & Shell

Wort in Textdatei suchen

gelöst Frage von Nick.BBatch & Shell4 Kommentare

Ich wollte ein einzelnes Wort aus einer Textdatei suchen und als Variable speichern. Allerdings ist das Wort nicht das ...

Microsoft Office

Excel Spalte nach Wort durchsuchen

gelöst Frage von pcklickMicrosoft Office2 Kommentare

Hallo liebe Admins! Ich habe ein Problem: Und zwar möchte ich eine Excel-Spalte nach einem Wort durchsuchen, bzw. zählen ...

Neue Wissensbeiträge
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 1 TagInternet4 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 1 TagWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 2 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 2 TagenSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
TK-Netze & Geräte
TAPI auf einem Win2016Server installieren und einrichten
Frage von wstabelTK-Netze & Geräte28 Kommentare

Hallo liebe Admins, ich habe folgende Situation: 1 Windows Server 2016 Standard als DC 1 SNOM 710 IP-Telefon 1 ...

Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell24 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Verschlüsselung & Zertifikate
Netzwerkfreigabe Verschlüsselung
Frage von grill-itVerschlüsselung & Zertifikate20 Kommentare

Moin zusammen, sicher nutzen hier die ein oder anderen ein Produkt zur Verschlüsselung von Netzwerkfreigaben/-laufwerken auf denen hochsensible Daten ...

Microsoft
Übertragung von MS Volumenlizenzen
Frage von SherlockineMicrosoft19 Kommentare

Ich bin Angestellte in einer kleinen 10-köpfigen IT-Firma, die Netzwerklösungen, Telefonielösungen und Ähnliches anbietet. Im Sommer hatten wir einen ...