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 Files in einem Folder Sub zählen

Mitglied: Itfreak

Itfreak (Level 1) - Jetzt verbinden

08.02.2010, aktualisiert 15:28 Uhr, 7034 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 ..
Ähnliche Inhalte
Internet Domänen
Sub-sub-Domain in htaccess umleiten
gelöst Frage von GruenspechtInternet Domänen4 Kommentare

Hallo zusammen, irgendwie hänge ich bei einem .htaccess-Problem fest. Ich habe eine Domain, die über die URL erreichbar ist. ...

Microsoft Office

Excel Marko "private sub" bearbeiten

gelöst Frage von ArnoNymousMicrosoft Office2 Kommentare

Hallo, ich stehe auf dem Schlauch. Habe hier eine Exceltabelle mit einem Makro, dass mittels "private sub" nicht sichtbar ...

Datenbanken

MSSQL Text in Zahl umwandeln

gelöst Frage von EricAG3Datenbanken1 Kommentar

Hallo zusammen, folgende Tabelle sei gegeben. Menge 5,5 2,5 - 2,5 Das Feld Menge ist vom varchar. Ich möchte ...

LAN, WAN, Wireless

Sub-Netze mit unterschiedlicher Subnetzmaske bilden

gelöst Frage von sunny4711LAN, WAN, Wireless5 Kommentare

Ich suche den Lösungsweg für folgende Aufgabe. In der Lösung werden zwei unterschiedliche Subnetzmasken verwendet. Kann mir jemand erklären ...

Neue Wissensbeiträge
Windows 7
Win7 Update scheitert KB4512506
Information von infowars vor 4 StundenWindows 7

Falls jemand auch das Problem hat mit dem: Monatliches Sicherheitsqualitätsrollup für Windows 7 für x64-basierte-Systeme (KB4512506) Das scheint mit ...

Humor (lol)
Wenn hacken nach hinten los geht
Information von em-pie vor 1 TagHumor (lol)4 Kommentare

Moin, weil heute Freitag ist, nachfolgender kurzer Artikel zum schmunzeln:) l+f: NULL ist ein notorischer Falschparker

Windows Update
Windows: August 2019 Patchday-Probleme
Information von kgborn vor 1 TagWindows Update3 Kommentare

Ich kippe mal einige kurze Informationen hier rein - vielleicht hilft es Betroffenen. Die August 2019-Updates für Windows haben ...

Sicherheits-Tools
Kaspersky "Sicherheitslösung"
Information von Looser27 vor 2 TagenSicherheits-Tools1 Kommentar

Wieso überrascht mich das nicht wirklich? Kaspersky gefährdet Privatsphäre

Heiß diskutierte Inhalte
SAN, NAS, DAS
Leiser stromsparender Debian EXT4 NAS-Heimserver: ECC-RAM wie betreiben?
Frage von Laser12SAN, NAS, DAS25 Kommentare

Moin, aktuell stelle ich einen Rechner zusammen, den mein Computerhändler bauen wird. Nach Jahrzehnten mit Desktops und zwei Notebooks ...

LAN, WAN, Wireless
VPN Tunnel zu PiVPN steht, aber kein Internet
gelöst Frage von KabuntelLAN, WAN, Wireless18 Kommentare

Hallo Community, habe heute PiVPN auf meinem Raspberry Pi 3b+ installiert, mit dem How To vom Kuketz-Blog Ich kann ...

Netzwerkgrundlagen
Proxmox auf dedicated Root Server mit nur einer IP nutzen
gelöst Frage von ndreier933Netzwerkgrundlagen12 Kommentare

Hallo Community, ich bin neu hier im Forum und weiß nicht ob ich das Thema richtg zugeordnet habe?Zusätzlich habe ...

Router & Routing
PfSense routing OpenVPn und IPSec
Frage von TheOnlyOneRouter & Routing11 Kommentare

Hallo zusammen, ich habe 3 Standorte die per VPN miteinander verbunden sind. (siehe Bild) Nun stehe ich vor der ...