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 Alle Dateien eines Ordners zusammenkopieren - nach Auswahlkriterien

Mitglied: Gurkenhobel

Gurkenhobel (Level 1) - Jetzt verbinden

07.10.2012, aktualisiert 14:55 Uhr, 2270 Aufrufe, 6 Kommentare

Hallo Gemeinde,

mir liegt ein VB-Script vor, daß ALLE Textdateien des aktuellen Ordners in eine einzige Datei kopiert (JOIN, MERGE, COMBINE, CONCATENATE). Ich nöchte aber nur bestimmte Dateitypen verarbeiten. Leider kommt beim Aufruf ein Fehler. Wie kann man das beseitigen?

01.
Dim fso, folder, files, NewsFile,sFolder, objTextFile 
02.
Const ForReading = 1 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
Set objOutputFile = fso.CreateTextFile("Merged.txt") 
06.
currentPath = ".\" 
07.
sFolder= currentPath 
08.
 
09.
Set files = fso.GetFolder(sFolder).Files 
10.
MSgBox files.Count 
11.
For each folderIdx In files     
12.
 if lcase(objFSO.getExtensionName(files.path))="wb2" then  ' Fehler 1A8 / 1B6 
13.
  Set objTextFile = fso.OpenTextFile(folderIdx.path, ForReading) '.name statt .path 
14.
  strText = objTextFile.ReadAll 
15.
  objTextFile.Close 
16.
  objOutputFile.WriteLine strText 
17.
 End if 
18.
Next   
19.
objOutputFile.Close
Egal ob ich in Zeile 12
...getExtensionName(file ODER files
verwende es kommt immer ein Fehler

Danke im voraus für die Hilfe

Micha
Mitglied: bastla
07.10.2012, aktualisiert um 16:17 Uhr
Hallo Gurkenhobel!

Etwas gestrafft (aber nicht getestet) etwa so:
01.
Dim fso, file, files, sFolder, objOutputFile 
02.
 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
Set objOutputFile = fso.CreateTextFile("Merged.txt") 
05.
sFolder = ".\" 
06.
 
07.
Set files = fso.GetFolder(sFolder).Files 
08.
For Each file In files     
09.
    If LCase(fso.GetExtensionName(file.Name)) = "wb2" Then 
10.
        objOutputFile.WriteLine fso.OpenTextFile(file.Path).ReadAll 
11.
     End if 
12.
Next   
13.
objOutputFile.Close
Beim Zusammenkopieren von Code-Schnipseln immer darauf achten, dass Objekte gleich benannt sind (im konkreten Fall "objFSO" vs "fso") - das wäre Dir übrigens eher aufgefallen, wenn du "Option Explicit" verwendet hättest (ansonsten wären die Deklarationen per "Dim" hier auch entbehrlich) ...

Falls Du übrigens noch Wert auf die Ausgabe der Anzahl an "wb2"-Files legst, musst du diese per Zähler innerhalb der Schleife ermitteln ...

Grüße
bastla

P.S.: Als Batch wäre das übrigens genau eine Zeile:
type *.wb2>Merged.txt
Bitte warten ..
Mitglied: rubberman
07.10.2012, aktualisiert um 16:11 Uhr
Hallo Gurkenhobel,

files ist eine Aufzählung, die alle Dateien im spezifizierten Verzeichnis repräsentiert. Somit hat files natürlich keine Eigenschaft path.
Du iterierst aber über files und ordnest der Variablen folderIdx jeweils ein Dateiobjekt zu (auch wenn der von dir gewählte Name etwas irreführend ist).
Somit solltest du mal mit fso.getExtensionName(folderIdx.Path) testen (objFSO hast du nämlich auch nirgends definiert ).
Gut gemeinter Rat:
Du solltest zumindest versuchen zu verstehen, was du so zusammen kopierst.

Grüße
rubberman

[Edit Hallo bastla /]
Bitte warten ..
Mitglied: Gurkenhobel
07.10.2012, aktualisiert um 17:37 Uhr
Hallo Ihre zwei beiden

und danke für die Aufklärung. Ich tue mir manchmal sehr schwer, wenn ich gefunde Scripte anpasse.

Den Batch mit
type *.wb2 > Merged.txt
hatte ich auch schon probiert. Aber irgendwie haben die wb2-Dateien kein abschließendes Zeilenende CR so daß dann alles in eine (schlecht auswertbare) Zeile kopiert wird.

mit
if lcase(fso.getExtensionName(folderIdx.Path))="wb2" Then
klappt es natürlich auch...

Einen schönen (Rest-)Sonntag wünscht Euch der Gurkenhobel
Bitte warten ..
Mitglied: bastla
07.10.2012, aktualisiert um 17:43 Uhr
Hallo Gurkenhobel!
irgendwie haben die wb2-Dateien kein abschließendes Zeilenende CR so daß dann alles in eine (schlecht auswertbare) Zeile kopiert wird.
Vermutlich fehlt eher LF - anyhow, sollte etwa so gehen:
for %%i in (*.wb2) do (type "%%i" & echo\)>>Merged.txt
Grüße
bastla
Bitte warten ..
Mitglied: Gurkenhobel
07.10.2012 um 19:12 Uhr
Ja danke Bastla,

AUCH DAS funktioniert ganz toll.
Grüße

Gurkenhobel
Bitte warten ..
Mitglied: pieh-ejdsch
07.10.2012, aktualisiert um 22:22 Uhr
moin,

ergänzend dazu (weil schon etwas Batch mit ist) noch das Anzeigen von .txt Dateien, welche kein Abschliesendes LF haben:
findstr /m /v $ *.txt
Um keine zusätzliche Leerzeile bei den Dateien mit abschliessendem LF zu erzeugen benutzt man Find:
(for %i in (*.txt) do @find /v "" <"%~i")>merged.txt
Wenn es etwas Performanter sein soll mit einer Pipe:
(for %i in (*.txt) do @type "%~i" |findstr .)>merged.txt
More statt type gibt gleich das fehlende LF dazu, sollte aber gepiped oder in ein Datei umgeleitet werden.

Eine Pipe zu more erzeugt eine Zusätzliche Zeile (wie Echo().

Gruß Phil
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Auslesen von Dateien eines Ordners
gelöst Frage von KyrinjaVB for Applications5 Kommentare

Hallo liebe Gemeinde, ich würde gerne den Ordner Documents auslesen um zu sehen ob sich darin PDF dateien befinden. ...

Batch & Shell

Batch : alle Dateien eines Ordners bearbeiten

gelöst Frage von deguonkelBatch & Shell1 Kommentar

Hallo, ich habe folgendes Problem, ich habe ein fertiges Batch-Programm, bei dem man einen Dateipfad angibt, und diese Datei ...

Basic

Dateien eines Ordners auslesen und in Protokolldatei speichern

gelöst Frage von GurkenhobelBasic19 Kommentare

Hallo Gemeinschaft, schon wiedereinmal stehe ich vor UNENDLICHEN SCHWIERIGKEITEN. Ich möchte von jeder der ca.1200 Dateien eines Ordners die ...

Debian

Alle Dateien eines Ordners in ein .tar.gz Archiv packen

Frage von CreamyCewieDebian2 Kommentare

Hallo! Ich habe ein Verzeichnis /var/test welches einige Dateien enthält. Ich bräuchte nun ein SH-Script welches mir alle Dateien ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 2 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 8 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 22 StundenSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server38 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless21 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...