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

gelöst Mehrere Dateien laden und eine Tabelle aus diesen in neuen Dateien übergeben

Mitglied: Jaeger1983

Jaeger1983 (Level 1) - Jetzt verbinden

01.11.2013, aktualisiert 00:15 Uhr, 1901 Aufrufe, 15 Kommentare, 5 Danke

Hallo zusammen,

folgendes Problem habe ich und hoffentlich könnt Ihr mir helfen.

Ich habe ca. 500 Textdateien von unserer Website in einem Ordner exportiert. Die Dateien haben völlig unterschiedliche Dateinamen. Nun ist es so, dass der gesamte HTML-Code mit übernommen wurden und sich in den Export-Einstellungen nichts anpassen lässt. Die Datei besteht aus Text und einer einzigen Tabelle die benötigt wird.

Als Beispiel

<!DOCTYPE html>
<html lang="DE">
<head>
<meta content="text/html;
...
<table ....
...Daten...
...Daten...
</table>

In den Dateien kommt das <table>/</table> nur ein mal vor. Gibt es eine Möglichkeit per Batch oder einem Freeware-Tool den Teil zwischen <table> und </table> automatisiert auszulesen und in einzelne Textdateien schreiben zu lassen?

Schon mal vielen Dank für Eure Hilfe!
Mitglied: rubberman
01.11.2013, aktualisiert um 01:16 Uhr
Hallo Jaeger1983, willkommen im Forum.

Batch ist technisch ungeeignet um HTML Quelltext zu verarbeiten. Batch arbeitet Textdateien zeilenweise ab, wobei die Stringlänge auf 8191 Zeichen beschränkt ist. HTML braucht grundsätzlich gar keinen Zeilenumbruch und könnte theoretisch in einer einzigen Zeile mit unbestimmter Länge vorliegen.

Dein Vorhaben ließe sich mit einem Script umsetzen, das Reguläre Ausdrücke unterstützt. Dazu fehlt aber einiges an Zusatzinformationen.
  • Liegen alle Dateien im selben Verzeichnis?
  • Haben sie alle die gleiche Dateiendung und wenn ja, welche (oder wie sonst sollen die zu verarbeitenden Dateien identifiziert werden)?
  • Sind die table-Tags selbst Bestandteil der benötigten Daten, oder nur der HTML Text, der in sie eingeschlossen ist?
  • Sollen die ausgelesenen Daten in die gleichen Dateien zurückgeschrieben werden oder in andere Dateien (falls in andere, wohin und mit welcher Nomenklatur)?

Grüße
rubberman
Bitte warten ..
Mitglied: certifiedit.net
01.11.2013 um 01:26 Uhr
Ich würde das gerne Ergänzen: Wie ist die bisherige Site aufgebaut? besteht ggf. die Möglichkeit die Daten direkt aus einer DB (MYSQL?) heraus zu ziehen?
Bitte warten ..
Mitglied: Jaeger1983
01.11.2013 um 09:40 Uhr
Danke für die schnellen Antworten!

rubberman:
- die Daten liegen in einem Verzeichnis
- gleiche Dateiendung .html
- die Table Tags sind selbst Bestandteil
- in eine andere Datei, html wäre vollkommen in Ordnung

certifiedit:
Leider nein, wenn ich die Daten habe, dann kommen diese aber direkt in eine DB, damit ich nicht irgendwann wieder vor diesem Problem stehe.

Gruß
Jaeger1983
Bitte warten ..
Mitglied: certifiedit.net
01.11.2013 um 10:28 Uhr
Zitat von Jaeger1983:
Danke für die schnellen Antworten!

rubberman:
- die Daten liegen in einem Verzeichnis
- gleiche Dateiendung .html
- die Table Tags sind selbst Bestandteil
- in eine andere Datei, html wäre vollkommen in Ordnung

certifiedit:
Leider nein, wenn ich die Daten habe, dann kommen diese aber direkt in eine DB, damit ich nicht irgendwann wieder vor diesem
Problem stehe.

Gruß
Jaeger1983

OK, aber warum wird man hier wegen einer Anmerkung herunter bewertet, die dir ggf. enorm Zeit gespart hätte?
Bitte warten ..
Mitglied: Jaeger1983
01.11.2013, aktualisiert um 10:36 Uhr
Zitat von certifiedit.net:
> Zitat von Jaeger1983:
> ----

OK, aber warum wird man hier wegen einer Anmerkung herunter bewertet, die dir ggf. enorm Zeit gespart hätte?

Kann ich Dir nicht beantworten.
Bitte warten ..
Mitglied: rubberman
01.11.2013, aktualisiert um 10:51 Uhr
@certifiedit
Ich war's auch nicht, ich fand die Frage durchaus gerechtfertigt.

@Jaeger1983
Bin auf Arbeit und habe nicht die Zeit das jetzt zu erledigen. Wenn's ordentlich werden soll, werde ich das heute Abend schreiben. Ist kein riesiger Aufwand ...
Nur noch eine Rückfrage: Soll alles in eine Datei oder für jede Tabelle eine neue?

Grüße
rubberman
Bitte warten ..
Mitglied: Jaeger1983
01.11.2013 um 11:26 Uhr
Danke rubberman, es wäre schön, wenn ich pro Tabelle eine Datei hätte.
Bitte warten ..
Mitglied: Endoro
01.11.2013 um 15:32 Uhr
Hi, hier das Beispiel einer Lösung mit sed for Windows.
Wenn die Tabellentags mit übertragen werden sollen:
01.
sed -ni.bak "/<table/,/<\/table/p" *.html
und ohne Tags:
01.
sed -ni.bak "/<table/,/<\/table/{//!p}" *.html
lg.
Bitte warten ..
Mitglied: rubberman
01.11.2013 um 15:53 Uhr
Hallo Jaeger1983,

Einzeiler wie Endoro kann ich nicht bieten. Wenn es ohne 3rd-Party-Tool sein soll, hätte ich hier ein VBScript:

*.vbs
01.
Option Explicit
02.

03.
Const strFolder = "C:\pfad\zu\dateien"
04.
Const strPrefix = "Table_"
05.

06.
Const ForReading = 1
07.
Const ForWriting = 2
08.
Dim objFSO, objFolder, objFile, objFileNew, objStream, objRegEx, colMatches
09.
Dim strContent, strFileNew
10.

11.
Set objFSO = CreateObject("Scripting.FileSystemObject")
12.
Set objFolder = objFSO.GetFolder(strFolder)
13.
Set objRegEx = New RegExp
14.
objRegEx.Global = True
15.
objRegEx.IgnoreCase = True
16.
objRegEx.Pattern = "<table>.*\s*</table>"
17.

18.

19.
For Each objFile In objFolder.Files
20.
  If StrComp(objFSO.GetExtensionName(objFile.Name), "html", vbTextCompare) = 0 _
21.
   And objFile.Size > 0 _
22.
   And Left(objFile.Name, Len(strPrefix)) <> strPrefix Then
23.
    Set objStream = objFile.OpenAsTextStream(ForReading)
24.
    strContent = objStream.ReadAll
25.
    objStream.Close
26.
    If objRegEx.Test(strContent) Then
27.
      Set colMatches = objRegEx.Execute(strContent)
28.
      strFileNew = objFSO.BuildPath(strFolder, strPrefix & objFile.Name)
29.
      Set objFileNew = objFSO.OpenTextFile(strFileNew, ForWriting, True)
30.
      objFileNew.Write colMatches(0)
31.
      objFileNew.Close
32.
    End If
33.
  End If
34.
Next
strFolder anpassen und los gehts.

Grüße
rubberman
Bitte warten ..
Mitglied: Jaeger1983
01.11.2013 um 20:49 Uhr
Hallo rubberman,

vielen vielen Dank für die schnelle Hilfe!

Die 500 Dateien sind fertig. Nun habe ich festgestellt, dass es weitere 2000 Dateien in einer Ordnerstruktur gibt. Bei den weiteren Dateien ist das Problem, dass der Beginn der Tabelle mit <table width="100%" ....> beginnt.

Gibt es die Möglichkeit, dass das gesamte Verzeichnis durchsucht wird und die Dateien am "Fundort" abgelegt werden.

Sorry, bin durch Zufall an die Daten gekommen
Bitte warten ..
Mitglied: rubberman
01.11.2013, aktualisiert um 21:55 Uhr
Hallo Jaeger1983,

als hätte ich den Braten nicht bereits im Vorfeld gerochen
01.
Option Explicit
02.

03.
Const strFolder = "C:\pfad\zu\dateien"
04.
Const strPrefix = "Table_"
05.

06.
Const ForReading = 1
07.
Const ForWriting = 2
08.
Dim objFSO, objRegEx
09.

10.
Set objFSO = CreateObject("Scripting.FileSystemObject")
11.
Set objRegEx = New RegExp
12.
objRegEx.Global = True
13.
objRegEx.IgnoreCase = True
14.
objRegEx.Pattern = "<table.*\s*</table>"
15.
ProcessFiles strFolder
16.

17.
Sub ProcessFiles(strPath)
18.
  Dim objFolder, objSubFolder, objFile, objFileNew, objStream, colMatches
19.
  Dim strContent, strFileNew
20.
  Set objFolder = objFSO.GetFolder(strPath)
21.
  For Each objSubFolder In objFolder.SubFolders
22.
    ProcessFiles objSubFolder.Path
23.
  Next
24.
  For Each objFile In objFolder.Files
25.
    If StrComp(objFSO.GetExtensionName(objFile.Name), "html", vbTextCompare) = 0 _
26.
     And objFile.Size > 0 _
27.
     And Left(objFile.Name, Len(strPrefix)) <> strPrefix Then
28.
      Set objStream = objFile.OpenAsTextStream(ForReading)
29.
      strContent = objStream.ReadAll
30.
      objStream.Close
31.
      If objRegEx.Test(strContent) Then
32.
        Set colMatches = objRegEx.Execute(strContent)
33.
        strFileNew = objFSO.BuildPath(strPath, strPrefix & objFile.Name)
34.
        Set objFileNew = objFSO.OpenTextFile(strFileNew, ForWriting, True)
35.
        objFileNew.Write colMatches(0)
36.
        objFileNew.Close
37.
      End If
38.
    End If
39.
  Next
40.
End Sub
Grüße
rubberman
Bitte warten ..
Mitglied: Jaeger1983
01.11.2013 um 22:43 Uhr
Hallo rubberman,

danke für die schnelle Rückmeldung.

Ich habe jetzt mit diesen alten Daten mal getestet. Hier funktionieren beide Varianten nicht. Kann das mit dem Code zusammenhängen der zwischen <table... und </table> steht? Bei den 500 war rein nur <table ...> Daten </table>. Bei den 2000 ist da noch nen Script mit drin.
Bitte warten ..
Mitglied: rubberman
01.11.2013 um 23:15 Uhr
Das ist unmöglich von hier aus zu sagen. Ich kenne den Inhalt deiner HTML Dateien nicht. Deine ursprüngliche Aussage war
Die Datei besteht aus Text und einer einzigen Tabelle die benötigt wird.
Sind es nun mehrere Tabellen, zwischen denen sich ein Script befindet?
Analysiere erst mal deine Dateien ...

Grüße
rubberman
Bitte warten ..
Mitglied: rubberman
02.11.2013 um 00:11 Uhr
Ups, wo ist denn deine Antwort von eben hin

Egal, teste mal mit folgendem Pattern:
objRegEx.Pattern = "<table[\s\S]*?</table>"
Grüße
rubberman
Bitte warten ..
Mitglied: Jaeger1983
02.11.2013 um 00:16 Uhr
Hallo rubberman,

vielen Dank! Jetzt funktioniert es, 1000 Dank!

Gruß
Jaeger1983
Bitte warten ..
Ähnliche Inhalte
Windows Installation

Windows neu aufsetzen über die Recovery-Datei

Frage von AmatuerWindows Installation2 Kommentare

Hallo zusammen, vorgestern habe ich erst ein Thread über dieses Thema bereits gestellt. Da ich glaube dass ich mich ...

Batch & Shell

Bestimmte Zeilen in einer Batch Datei löschen und die Datei neu speichern

Frage von nowyouseeme93Batch & Shell1 Kommentar

Share I$ H$ C$ F:\Benutzerservice\meineDaten G$ D$ F$ bilder H:\MeineDaten\Geheim Reports NetUser Telefonbuch F:\Intranet\Anwendungen\Nummern\Privat mitarbeiter mitteilungen Presse SocialMedia So ...

Windows 7

Ordnerumleitung - neu hinzugekommene Datei (SMB-Scan) wird nicht angezeigt

Frage von hesperWindows 78 Kommentare

Schönen guten Morgen! Ich hab hier ein Problem, das ich mir nicht wirklich erklären kann. Der große Mächtige kopierer ...

Windows Netzwerk

Domäne neu, Gruppenrichtlinien erstellen: das Rad neu erfinden?

gelöst Frage von DocuSnap-DudeWindows Netzwerk5 Kommentare

Hallo, wenn eine gewachsene Struktur umzieht in eine neue, frisch aufgsetzte Domäne und man die Chance hat Gruppenrichtlinien neu ...

Neue Wissensbeiträge
Windows 10

"Windows 10 Pro V1903: Gruppenrichtlinie "Telemetrie zulassen" aktivierbar?"

Tipp von Snowbird vor 7 StundenWindows 101 Kommentar

Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 - Jetzt in Deutsch verfügbar! (Windows 10 1903 Support)

Tipp von TrinXx vor 1 TagSicherheits-Tools1 Kommentar

Moin! Nach wochenlangem Warten wird Trend Micro das SP1 für WFBS 10 voraussichtlich am 26.08.19 veröffentlichen. Ich habe das ...

Hyper-V
Setup VM W2016 startet nicht in Hyper-V 2016
Erfahrungsbericht von keine-ahnung vor 3 TagenHyper-V7 Kommentare

Moin, sitze gerade über meinem neuen Server und versuche, die VM auf den Host zu prügeln. Jetzt wollte ich ...

Server-Hardware

HPE Proliant ML350P Gen8 Probleme mit Zugriff auf Raid-Volumes

Erfahrungsbericht von goscho vor 3 TagenServer-Hardware1 Kommentar

Hallo Leute, das Problemgerät: HPE ML350P G8 Windows Server 2012R2 HyperV-Host 8 x 300 GB 10K SAS HDD (1 ...

Heiß diskutierte Inhalte
Server
Ein Server ins Haus stellen. Was brauche ich dafür?
Frage von JoschiTomServer15 Kommentare

Hallo Community, ich spiele mit dem Gedanken eine Server mir zu holen. Was brauche ich dafür? Und wie sind ...

Windows Server
Ist es möglich, eine deutsche W2016 Installation mit einer UK-Lizenz zu aktivieren?
gelöst Frage von keine-ahnungWindows Server10 Kommentare

Moin at all, ist ja noch Freitag. Ich habe hier noch zwei UK OEM W2016 Standard Pakete rumfliegen Muss ...

LAN, WAN, Wireless
Mikrotik Gast-Wlan keine Verbindung zum Internet?
Frage von dirkschwarzLAN, WAN, Wireless10 Kommentare

Guten Morgen, habe ein wahrscheinlich einfaches Problem, bei dem ich aber nicht wirklich weiter komme Ich möchte ein Gast-Wlan ...

Batch & Shell
Mittels SED Text ersetzen in Anführungszeichen
gelöst Frage von nekronBatch & Shell9 Kommentare

Moin … bin nicht wirklich der SED/regex Mensch, vielleicht kann mir jemand auf die Schnelle Helfen :) ich habe ...