Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

VBScript funktioniert nicht so ganz.

Frage Microsoft Windows Tools

Mitglied: BlubbBlubb17

BlubbBlubb17 (Level 1) - Jetzt verbinden

06.07.2009, aktualisiert 12:56 Uhr, 3985 Aufrufe, 6 Kommentare

Guten Tag administrator Forum.
Ich suche seit ein paar Tagen nach einem Programm, dass mir das bearbeiten von mehreren html dateien auf einmal abnmimmt.
Ich habe hierzu ein VBscript von bastla gefunden und versucht auf mich anzupassen (danke nochmals an bastla).

Allerdings bekomme ich immer noch den Fehler
Ungültiges Zeichen bei Zeile 1 Zeichen 1
Der Fehlercode lautet 800A0408
und er gibt es mir als kompilierungsfehler an.

hier der Quelltext:

Pfad = "C:\Dokumente und Einstellungen\Boing\Desktop\hptests"
Typ = LCase("html")

Von = Array("<table width=""700"" border=""0"" cellspacing=""0"" cellpadding=""0"">" & vbCrLF & _
"<tr>" & vbCrLF & _
"<td width=""140"" align=""center""><a href=""index.html"">Start</a></td>" & vbCrLF & _
"<td width=""140"" align=""center"" valign=""middle""><a href=""kites.html"">Kites</a></td>" & vbCrLF & _
"<td width=""140"" align=""center"" valign=""middle""><a href=""Videos.html"">Videos</a></td>" & vbCrLF & _
"<td width=""140"" align=""center"" valign=""middle""><a href=""Testberichte.html"">Testberichte</a></td>" & vbCrLF & _
"<td width=""140"" align=""center"" valign=""middle""><a href=""Kontakt.html"">Kontakt</a></td>" & vbCrLF & _
"</table>")
Nach = Array("testtest")

Set fso=CreateObject("Scripting.FileSystemObject")
For Each File In fso.GetFolder(Pfad).Files
If LCase(fso.GetExtensionName(File.Path)) = Typ Then
Text = fso.OpenTextFile(File.Path).ReadAll
For i = 0 To UBound(Von)
Text = Replace(Text, Von(i), Nach(i), 1, -1, 1)
Next
fso.OpenTextFile(File.Path, 2, True).Write Text
End If
Next

Ich möchte mit dem Programm (in diesem Fall) eine Tabelle durch eine andere ersetzen. Aber ich wollte erstmal einen testlauf machen.

Grüße
Mitglied: 76109
06.07.2009 um 13:20 Uhr
Hallo BlubbBlubb17!

Wenn Du ein Array definierst, dann musst Du die einzelnen Strings durch ein Komma voneinander trennen z.B.:

Von = Array("string", "string", .....)

Gruß Dieter
Bitte warten ..
Mitglied: BlubbBlubb17
07.07.2009 um 17:35 Uhr
Hallo Dieter, danke für den Tipp.

nach jedem String? Also nach jedem "? oder wie müsste das bei

Von = Array("<table width=""700"" border=""0"" cellspacing=""0"" cellpadding=""0"">" & vbCrLF & _
"<tr>" & vbCrLF & _
"<td width=""140"" align=""center""><a href=""index.html"">Start</a></td>" & vbCrLF & _
"<td width=""140"" align=""center"" valign=""middle""><a href=""kites.html"">Kites</a></td>" & vbCrLF & _
"<td width=""140"" align=""center"" valign=""middle""><a href=""Videos.html"">Videos</a></td>" & vbCrLF & _
"<td width=""140"" align=""center"" valign=""middle""><a href=""Testberichte.html"">Testberichte</a></td>" & vbCrLF & _
"<td width=""140"" align=""center"" valign=""middle""><a href=""Kontakt.html"">Kontakt</a></td>" & vbCrLF & _
"</table>")

aussehen?

Ich komme einfach nicht dahinter wie ich das Script zum laufen bringe und langsam brauch ich das wirklich sonst komme ich mit meiner homepage nicht mehr dem nach was ich so alles vorhatte.

Grüße
Bitte warten ..
Mitglied: 76109
07.07.2009 um 18:38 Uhr
Hallo BlubbBlubb17!

So genau hatte ich mir Deinen Code letztes mal nicht angesehen. Mir ist nur aufgefallen, dass die Array's falsch definiert sind. D.h. Du hast nur Strings mit unsinng oft "" definiert.

Als String eine Zeichenfolge von Anfang bis Ende würde es in etwa so heissen:

Von = & _
"<table width=700 border=0 cellspacing=0 cellpadding=0>" & vbCrLF & _
"<tr>" & vbCrLF & _
"<td width=140 align=center><a href=index.html>Start</a></td>" & vbCrLF & _
"und so weiter"

Als Array mit Komma in einzelne Strings zerlegt in etwa so:
Von = Array( & _
"<table width=700 border=0 cellspacing=0 cellpadding=0>" & vbCrLF, & _
"<tr>" & vbCrLF, & _
"<td width=140 align=center><a href=index.html>Start</a></td>" & vbCrLF, & _
"und so weiter")

Dann wäre:
Von(0) = "<table width=700 border=0 cellspacing=0 cellpadding=0>" & vbCrLF
Von(1) = "<tr>" & vbCrLF
Von(2) = "<td width=140 align=center><a href=index.html>Start</a></td>" & vbCrLF
Von(3) = "und so weiter")

Sind innerhalb eines Strings die Zeichen ", wie vermutlich bei href ="text", dann
müsste dieser Teil so heissen: href=""text"">...

Wenn aber eine ganze Tabelle ersetzt weren soll, ist das viel zu umständlich.

Da kann man eine ganze Tabelle durch ein Split <tr> und </table> raushauen, sofern erkennbar ist, das es die gewünschte Tabelle ist, die rausfliegen soll.

Daher brauche ich schon genau Info's. Z.B. Eindeutig am Anfang ">Start<" und am Ende "Kontakt" oder definitiv ein </table>

Gruß Dieter
Bitte warten ..
Mitglied: BlubbBlubb17
07.07.2009 um 20:06 Uhr
Hallo Dieter,
das mit dem Zerlegen mit Kommas und dem VOn(0) (1).... verstehe ich jetzt nocht so ganz. Wann muss man das machen und wann nicht?

Da es aber um genau diese Tabelle geht würde mich auc heher deine letzte methode interessieren.
hier ist doch ein eindeutiger Start und ein eindeutiges </table>:

<table width="700" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="140" align="center""><a href="index.html">Start</a></td>
<td width="140" align="center" valign="middle"><a href="kites.html">Kites</a></td>
<td width="140" align="center" valign="middle"><a href="Videos.html">Videos</a></td>
<td width="140" align="center" valign="middle"><a href="Testberichte.html">Testberichte</a></td>
<td width="140" align="center" valign="middle"><a href="Kontakt.html">Kontakt</a></td>
</tr>
</table>

Wie müsste die Von Angabe denn dann aussehen?
Bitte warten ..
Mitglied: 76109
07.07.2009 um 20:37 Uhr
Hallo BlubbBlubb17!

Ja, wenn es in den verschiedenen Dateien nur diese eine Tabelle gibt, dann währe das natürlich optimal. Ansonsten währe wohl >Start< und >Kontakt< ein Indiz.

Schau Dir meine Beispiele doch mal etwas genauer an:

Das eine mit String ist eine einzelne komplette Zeichenfolge und das andere ist ein Array, dass meherere einzelne Zeichenfolgen enthält, die jeweis an einem Komma enden. Von(0) = String bis zum1. Komma, Von(1) = String nach dem 1. Komma bis zum 2.Komma usw.

Und eine For-Schleife mit UBound(Von) funktioniert NUR mit Arrays. Mit Strings geht das nicht. Den kann man höchtens mit Hilfe anderer Funktionen in einzelne Zeichen zerlegen.

String:
Von = "Eine Zeichenfolge"

Array:
Von = Array("1. Zeichfolge", "2. Zeichenfolge", "3. Zeichenfolge", "usw")
Das sind 4 Strings, die in Von(i=0) bis Von(i=3) angesprochen werden können.

Hoffe, dass war jetzt etwas verständlicher

Gruß Dieter
Bitte warten ..
Mitglied: 76109
08.07.2009 um 11:08 Uhr
Hallo BlubbBlubb17!

Also, dieser Code ersetzt eine vorhandene Tabelle mit der NewTable-Tabelle.

Existiert in einer Html-Datei keine Tabelle passiert nichts und wenn mehrere Tabellen existieren, dann passiert auch nichts. D.h., das nur dann die NewTable-Tabelle in die Html-Datei eingefügt wird, wenn diese explizit nur eine Tabelle enthält, die mit "<table" beginnt und mit "</table>" endet.

01.
Const Path = "C:\Dokumente und Einstellungen\Boing\Desktop\hptests" 
02.
 
03.
Dim Fso, File, Text, Text1, Text2, NewTable 
04.
 
05.
NewTable = "<table ....." & vbCrLf & _ 
06.
           "<tr>" & vbCrLf & _ 
07.
           "<.....=""Text mit Quote"" ......" & vbCrLf & _ 
08.
           "<..............................." & vbCrLf & _ 
09.
           "</table>"   'Hier kein vbCrLf mehr anfügen 
10.
 
11.
Set Fso = CreateObject("Scripting.FileSystemObject") 
12.
 
13.
For Each File In Fso.GetFolder(Path).Files 
14.
    If LCase(Right(File.Name, 5)) = ".html" Then 
15.
       Text = Split(Fso.OpenTextFile(File.Path).ReadAll, "<table") 
16.
       If UBound(Text) = 1 Then 
17.
           Text1 = Text(0) 
18.
           Text2 = Split(Text(1), "</table>", 2)(1) 
19.
           Text = Text1 & NewTable & Text2 
20.
           Fso.OpenTextFile(File.Path, 2, True).Write Text 
21.
       End If 
22.
   End If 
23.
Next
Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
C und C++
gelöst IF Abfrage funktioniert nicht mehr (2)

Frage von pablovic zum Thema C und C ...

Router & Routing
gelöst Fritzbox am FTTx-Anschluss ganz ohne Firewall ? (3)

Frage von Dilbert-MD zum Thema Router & Routing ...

Router & Routing
Transparenter Proxy funktioniert nicht? (1)

Frage von mrserious73 zum Thema Router & Routing ...

Linux
LTSP: PXE Boot funktioniert nicht (23)

Frage von Fenris14 zum Thema Linux ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...