Dateien eines Ordners auslesen und in Protokolldatei speichern
Hallo Gemeinschaft,
schon wiedereinmal stehe ich vor UNENDLICHEN SCHWIERIGKEITEN. Ich möchte von jeder der ca.1200 Dateien eines Ordners die zwölfte Zeile auslesen und den Text in eine Protokolldatei schreiben. Davor (oder danach) soll der jweilige Dateiname stehen. Ich habe zwei vorhandene Scripts zusammengefügt, bekomme aber in Zeile 7 immer eine Fehlermeldung (Typenkonflikt).
Ich weiß nimmer weiter und würde mich über Hilfe sehr freuen.
Abendliche Grüße
schon wiedereinmal stehe ich vor UNENDLICHEN SCHWIERIGKEITEN. Ich möchte von jeder der ca.1200 Dateien eines Ordners die zwölfte Zeile auslesen und den Text in eine Protokolldatei schreiben. Davor (oder danach) soll der jweilige Dateiname stehen. Ich habe zwei vorhandene Scripts zusammengefügt, bekomme aber in Zeile 7 immer eine Fehlermeldung (Typenkonflikt).
Set oFSO = createobject("Scripting.FileSystemObject")
Sub Listordner(ordner)
Set ordner = oFSO.getfolder(ordner)
For Each file In ordner.files
Set oFile = oFSO.OpenTextFile(ordner.files, 1)
for i = 1 to 12
strLine = oFile.Readline ' 12. Zeile auslesen
next
Stelle=Instr(strLine,"</h1>")-73
Ortsname = mid(strLine, 73,Stelle) & " "
oFile.Close
liste = liste & file.path & Ortsname & vbCr
Next
For Each unterordner In ordner.subfolders
liste = liste & unterordner.path & vbCr
Listordner unterordner
Next
End Sub
Ordner ="." ' aktueller Ordner
Listordner ordner
Set logbuch = fs.opentextfile("inhalt.txt", 8, true,0)
Logbuch.writeline liste
Logbuch.close
Ich weiß nimmer weiter und würde mich über Hilfe sehr freuen.
Abendliche Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 245119
Url: https://administrator.de/contentid/245119
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
19 Kommentare
Neuester Kommentar
Hallo Gurkenhobel
ich hab es mir so weit wie möglich abgewöhnt die alten Skripte zu verwenden und nutze lieber Powershell.
$output = ""
$Files = dir "c:\Dein Ordner"
Foreach ($File in $Files) {
$output += "`n`n`t==== $($File.Fullname) ====`n"
$output += (gc ($File.Fullname))[11]
}
$output | Out-File inhalt.txt
Aber wenn ich das richtig sehe, willst du HTML files einer Datenbank parsen. Soetwas ähnliches hab ich auch schon mal mit Powershell realisiert und da gibt es sehr viele gute Lösungen.
Gruß
Andi
ich hab es mir so weit wie möglich abgewöhnt die alten Skripte zu verwenden und nutze lieber Powershell.
$output = ""
$Files = dir "c:\Dein Ordner"
Foreach ($File in $Files) {
$output += "`n`n`t==== $($File.Fullname) ====`n"
$output += (gc ($File.Fullname))[11]
}
$output | Out-File inhalt.txt
Aber wenn ich das richtig sehe, willst du HTML files einer Datenbank parsen. Soetwas ähnliches hab ich auch schon mal mit Powershell realisiert und da gibt es sehr viele gute Lösungen.
Gruß
Andi
Dann versuch dich doch mal an powershell. Du kannst den code einfach in eine Powershell rein kopieren und schon hast du das Ergebnis auf deinem Desktop.
Gruß
Andi
$InputFolder = "C:\testfileline12" # Pfad zu dem Ordner mit den einzulesenden Dateien
$OutputFile = "$env:userprofile\desktop\inhalt.txt" # Pfad zur Ausgabedatei - Momentan wäre es der Desktop
$output = "" # Temporäre Variable
$Files = dir $InputFolder # Dateien im Ordner ermitteln
Foreach ($File in $Files) {
$output += "`r`n`r`n`t==== $($File.Fullname) ====`r`n" # trennzeilen mit vollständigem Namen als Überschrift (Alternativ "Fullname" durch "Name" ersetzen)
$output += (gc ($File.Fullname))[11] # Inhalte der Dateien
}
$output | Out-File $OutputFile
Gruß
Andi
Du kannst die Befehle auch einfach rein kopieren. Mehrzeile Befehle gehen auch ohne Probleme. Am Ende musst du nur noch einmal die Eingabe taste drücken.
Wenn du die PS1 Datei ausführen willst, dann kannst du in eine Powershell die mit Adminrechten gestartet wird den Befehl "Set-ExecutionPolicy Unrestricted" einfügen und dann alle ps1 skripte ohne prüfung ausführen (http://technet.microsoft.com/de-de/library/ee176961.aspx)
Wenn du die PS1 Datei ausführen willst, dann kannst du in eine Powershell die mit Adminrechten gestartet wird den Befehl "Set-ExecutionPolicy Unrestricted" einfügen und dann alle ps1 skripte ohne prüfung ausführen (http://technet.microsoft.com/de-de/library/ee176961.aspx)
Freut mich dass du schon gut vorankommst
wenn du es einfach willst, dann könntest du split verwenden.
($Variable.split(":"))[1].split("<")
Damit sollte das Ergebnis dann so aussehen:
117.php: Haslach
118.php: Herrenberg
119.php: Kayh
Falls du dann auftretende Leerzeichen am Anfang und am Ende entfernen möchtest, dann einfach ".trim()" anfügen.
wenn du es einfach willst, dann könntest du split verwenden.
($Variable.split(":"))[1].split("<")
Damit sollte das Ergebnis dann so aussehen:
117.php: Haslach
118.php: Herrenberg
119.php: Kayh
Falls du dann auftretende Leerzeichen am Anfang und am Ende entfernen möchtest, dann einfach ".trim()" anfügen.