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
GELÖST

Alle Files in einem Folder Sub zählen

Frage Entwicklung VB for Applications

Mitglied: Itfreak

Itfreak (Level 1) - Jetzt verbinden

08.02.2010, aktualisiert 15:28 Uhr, 6881 Aufrufe, 12 Kommentare

Moin Moin

Ich habe da wieder mal ein gröberes Scripting problem das einfach nicht klappen will
Ich muss alle Files mit jeder beliebigen extension in einem Share aufzählen können und
dann in ein Textfile speichern.

Ich habe folgendes:

01.
 
02.
On Error Resume Next 
03.
Dim fso, folder, files, NewsFile,sFolder 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
Set folder = fso.GetFolder("C:\Documents and Settings\username\My Documents") 
06.
Set outfile = fso.CreateTextFile("c:\testout.txt") 
07.
Set files = folder.Files 
08.
 
09.
 
10.
For each folderIdx In files 
11.
outfile.WriteLine(folderIdx.Name & ";" & folderIdx.DateCreated & ";" & folderIdx.DateLastModified) 
12.
Next 
13.
outfile.Close  
14.
 
Danke für die Hilfe im Voraus
Mitglied: laster
08.02.2010 um 14:51 Uhr
Hallo,

bei mir liefert
01.
cd /d c:\windows 
02.
dir /s /b | find /C "C:"

den Wert 28810. Reicht Dir das?

vG LS
Bitte warten ..
Mitglied: 76109
08.02.2010 um 14:56 Uhr
Hallo Itfreak!

Was zeigt die Fehlermeldung, wenn Du "On Error Resume Next" testweise als Kommentar kennzeichnest?

Ändere mal die Codezeile 11 in:
01.
outfile.WriteLine folderIdx.Name & ";" & folderIdx.DateCreated & ";" & folderIdx.DateLastModified
Gruß Dieter
Bitte warten ..
Mitglied: Itfreak
08.02.2010 um 14:56 Uhr
Leider nid !
Auf so was wäre ich sicher auch gekommen.
Bitte warten ..
Mitglied: Itfreak
08.02.2010 um 15:02 Uhr
Bekomme keine Fehlermeldung, mit deinen Vorschlägen auch nicht!
Bitte warten ..
Mitglied: 76109
08.02.2010 um 15:26 Uhr
Hallo itfreak!

Dann versuchs mal damit:
01.
'On Error Resume Next 
02.
 
03.
Dim fso, folder, subFolder, file 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
Set folder = fso.GetFolder("C:\Documents and Settings\adrian.stadelmann\My Documents") 
07.
Set outfile = fso.CreateTextFile("c:\testout.txt") 
08.
     
09.
For Each subFolder In folder.SubFolders 
10.
    For Each file In SubFolder.Files 
11.
        outfile.WriteLine folderIdx.Name & ";" & folderIdx.DateCreated & ";" & folderIdx.DateLastModified 
12.
    Next 
13.
Next 
14.
 
15.
outfile.Close
Gruß Dieter
Bitte warten ..
Mitglied: TsukiSan
09.02.2010 um 03:59 Uhr
oder meintest du soetwas hier:
01.
Set objNetwork = WScript.CreateObject("WScript.Network") 
02.
Username = objNetwork.UserName  
03.
 
04.
 
05.
Ordner = "C:\Documents and Settings\" & username & "\My Documents" 
06.
LogPfad = "C:\Z_Ergebnis.txt" 
07.
 
08.
set fs = createobject("Scripting.FileSystemObject") 
09.
 
10.
set DateiInfo = fs.CreateTextfile(LogPfad,True) 
11.
DateiInfo.close 
12.
 
13.
set DateiInfo = fs.opentextfile(LogPfad, 8) 
14.
 
15.
Listordner Ordner 
16.
 
17.
Sub ListOrdner(ordner) 
18.
	On Error resume next 
19.
 
20.
	Set ordner = fs.getfolder(ordner) 
21.
 
22.
	For Each file In ordner.files 
23.
		 
24.
		Pfadangabe =file.path 
25.
		if not Pfadangabe = "" then DateiInfo.writeline (Pfadangabe) 
26.
 
27.
	Next 
28.
 
29.
	For Each Unterordner In Ordner.subfolders 
30.
		 
31.
		Pfadangabe = unterordner.path 
32.
		Listordner unterordner 
33.
 
34.
	next 
35.
End Sub 
36.
 
37.
DateiInfo.close 
38.
 
39.
Set fs = nothing 
40.
set DateiInfo = nothing 
41.
Set objNetwork = nothing
Gruss
Tsuki
Bitte warten ..
Mitglied: 76109
09.02.2010 um 11:35 Uhr
Hallo Tsuki!

Wobei
Zeile 25 If Not Pfadangabe = ""
irgendwie wenig Sinn macht, zumal Each nur gefundene Dateien auflistet, die dann auch eine Pfadangabe haben

Und
Zeile 32 Listordner unterordner
da könnte jetzt eigentlich
Zeile 32 Listordner Pfadangabe
stehen?

Oftmals ist es hilfreich, seinen eigenen Code nochmal durchzulesen

Gruß Dieter
Bitte warten ..
Mitglied: TsukiSan
09.02.2010 um 14:45 Uhr
Hallo didi1954,

du hast sicher Recht mit deiner Ausfuehrung!
Aber setze in meinem Script einen falschen Pfad und lasse das ON-Error-Gedingens aktiv.

Desweiteren sollte der TO erst mal deine Frage und deinen Loesungsvorschlag befolgen und dir eine Antwort geben.

Deine Scriptingkenntnisse sind sicher weiter als meine und ich wollte nur eine andere "Tuer" aufzeigen, wie man seinem Problem naeher kommen kann.
Fuer welche Variante er sich letztendlich entscheidet, haengt ganz von ihm ab.

Meine Idee, war keine gestestete und auch keine Fragestellung, OB man das so machen kann.

Also, bitte nicht falschverstehen und nicht am Thema vorbeikommentieren.

Viele Gruesse

Tsuki
Bitte warten ..
Mitglied: 76109
09.02.2010 um 15:01 Uhr
Hallo Tsuki!

Jetzt sei nicht gleich eingeschnappt

Ich habe ja nicht geschrieben, dass Dein Script schlechter ist, sondern nur darauf hingewiesen, was man zunächst einmal ändern kann/sollte. Wenn's der TO so verwendet, dann wird es so nicht funktionieren, wie es sollte. Dein Script ist sogar besser als meines, weil es gleich alle Unterordner nach Dateien durchsucht. Also kannst Du jetzt wieder erhobenen Hauptes durch die Firma stolzieren

Gruß Dieter
Bitte warten ..
Mitglied: TsukiSan
09.02.2010 um 15:46 Uhr
Hallo Dieter,

vielen Dank fuer die Blumen!

Ich muss ehrlich gestehen, dass ich mein Script nicht getestet hatte!
Mir fielen nur diese Zeilen spontan ein.
Eingeschnappt bin ich nicht und werde es auch nicht sein. Ich mag Anregungen!
Vielen Dank dafuer!
Und selbst wenn ich stolz mit diesem Script durch unsere Firma spazieren wuerde, es wuerde niemanden interessieren

Nun warten wir aber mal lieber auf die Kommentare vom OT/TO
Danach passen wir's an.

Gruss
Tsuki
Bitte warten ..
Mitglied: Itfreak
11.02.2010 um 10:12 Uhr
Hallo Tsuki

Dein Script ist super aber so ws habe ich auch schon aber dein Script
ist ein bissschen schneller als das was ich habe.
Ich müsste am Schluss nur noch eine Zusammenfassung haben von welchee Dateiextension
wieviele Dokumente vorhanden sind.
Das klappt bei mir bei gewissen filelängen & Share inhalt eben nicht zuverlässig!

Danke im Voraus

Gruss Itfreak
Bitte warten ..
Mitglied: 76109
11.02.2010 um 13:24 Uhr
Hallo Itfreak!

Das könnte man über Dictionary (assoziative Arrays) machen

In den For Each-File-Schleifen einen "Call AddDictionary" einfügen, wo jede Dateierweiterung erfasst und gezählt wird.

Mit "Call ListDictionary" werden die Dateierweiterungen und deren Anzahl aktuell in Variable "s" übergeben. Hier sollte dann der Code für das Schreiben in eine Datei stehen...

Falls Du nicht erst zum Schluss alles ausgeben willst, dann kann das Array mit einem "Call DelDictionary" zurückgesetzt werden.

Und falls Du die Dateierweitungen lieber in Kleinbuchstaben haben möchtest, dann ändere UCase(..) in LCase(..) um.

01.
Dim dic		'Lokale Variable alle Prozeduren 
02.
 
03.
 
04.
Set dic = CreateObject("Scripting.Dictionary") 
05.
 
06.
.... 
07.
 
08.
For Each File In .... 
09.
.... 
10.
    Call AddDictionary(Fs.GetExtensionName(File)) 
11.
.... 
12.
 
13.
Next 
14.
.... 
15.
 
16.
Call ListDictionary 
17.
.... 
18.
 
19.
 
20.
Private Sub AddDictionary(ByRef Extension) 
21.
    Dim Ext 
22.
     
23.
    Ext = UCase(Extension) 
24.
     
25.
    If dic.Exists(Ext) Then dic.Item(Ext) = dic.Item(Ext) + 1 Else dic.Add Ext, 1 
26.
End Sub 
27.
 
28.
Private Sub DelDictionary() 
29.
    dic.RemoveAll 
30.
End Sub 
31.
 
32.
Private Sub ListDictionary() 
33.
    Dim Ext, s 
34.
     
35.
    For Each Ext In dic.Keys 
36.
        s = Ext & " " & dic.Item(Ext) 
37.
    Next 
38.
End Sub
Gruß Dieter

[edit] Private Sub ListDictionary() geändert [/edit]
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Exchange Server
How to recover Exchange mailbox folder for FREE

Link von Herbrich19 zum Thema Exchange Server ...

LAN, WAN, Wireless
gelöst Kein DHCP-Relay am Sub-Switch HP (20)

Frage von westberliner zum Thema LAN, WAN, Wireless ...

Microsoft Office
gelöst Excel Formeln - Zählen der Anzahl eindeutiger Zellwerte mit einer Nebenbedingung (4)

Frage von Booster07 zum Thema Microsoft Office ...

Exchange Server
Move Public Folder to another Public Folder (4)

Frage von c64b311ee9 zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...