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

Frage Entwicklung VB for Applications

Mitglied: Gurkenhobel

Gurkenhobel (Level 1) - Jetzt verbinden

07.10.2012, aktualisiert 14:55 Uhr, 2258 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
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 14 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 17 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...