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

Ordnerstruktur Script mit Logfile!

Frage Entwicklung

Mitglied: chrizz-at

chrizz-at (Level 1) - Jetzt verbinden

08.09.2008, aktualisiert 10.09.2008, 5144 Aufrufe, 9 Kommentare

Hallo, ich bin neu hier und brauche unbedingt eure Hilfe!
Ich habe ein Script erstellt welches von einem angegeben Ordner die Unterordner und Dateien (Name und Größe) in eine Logdatei schreibt.
Nur die Dateinamen in den Unterordnern werden nicht geschrieben, ich weis nicht wie ich das einbinden kann.

Ich hoffe Ihr könnt mir helfen!

lg chris

Dim Ordnername, oFile

Ordnername = "C:\AddOn2"

Set fso = CreateObject("Scripting.FileSystemObject")

' Log Datei erstellen
Set oFile = fso.OpenTextFile("C:\" & Date() & ".log",8,true)

' Referenz auf ein Verzeichnis holen
Set Verzeichnis = FSO.GetFolder(Ordnername)

' Ausgabe in Protokoll
oFile.WriteLine "Kopierte Daten vom " & Now()
oFile.WriteLine "-- Dateien:"

' Alle Dateien
For Each Datei In Verzeichnis.Files
oFile.WriteLine "--> " & Datei.Name & " || Größe: " & Round(Datei.Size/1024,2) & " Kilobytes"
Next
oFile.WriteLine " "
oFile.WriteLine "-- Ordner:"

' Alle Unterverzeichnisse
For Each UnterVerzeichnis In Verzeichnis.SubFolders
oFile.WriteLine "--> " & UnterVerzeichnis.Name & " || Größe: " & Round(UnterVerzeichnis.Size/1024,2) & " Kilobytes"
Next
For Each Datei in Unterordner.Files
oFile.WriteLine "--> " & Datei.Name & " || Größe: " & Round(Datei.Size/1024,2) & " Kilobytes"
Next
oFile.WriteLine " "
oFile.WriteLine " "
oFile.WriteLine " "
oFile.Close
Mitglied: Iwan
08.09.2008 um 14:23 Uhr
hallo,

ich hab mich mal dran probiert und nach langem hin und her ein (nicht ganz saubere) Lösung gefunden:
01.
Function GetSubFolders(Pfad)  
02.
  Set Verzeichnis = FSO.GetFolder(Pfad)  
03.
  Set UnterVerzeichnis = Verzeichnis.SubFolders 
04.
  'On Error Resume Next  
05.
  For Each Ordner In UnterVerzeichnis  
06.
     WriteLog2 Ordner 
07.
     GetSubFolders Ordner.Path 
08.
  Next  
09.
End Function 
10.
 
11.
Function WriteLog1(Pfadangabe) 
12.
  Dim Ordnername, oFile 
13.
  Set oFile = FSO.OpenTextFile("C:\" & Date() & ".log",8,true) 
14.
  Set Ordner = FSO.GetFolder(Pfadangabe) 
15.
 
16.
  oFile.WriteLine "Kopierte Daten vom " & Now() 
17.
  oFile.WriteLine " " 
18.
 
19.
  oFile.WriteLine "-> " & Ordner.Name & " || Größe: " & Round(Ordner.Size/1024,2) & " Kilobytes" 
20.
  For Each Datei In Ordner.Files 
21.
    oFile.WriteLine "|-> " & Datei.Name & " || Größe: " & Round(Datei.Size/1024,2) & " Kilobytes" 
22.
  Next 
23.
  oFile.WriteLine " " 
24.
  oFile.Close 
25.
End Function 
26.
 
27.
Function WriteLog2(Ordner) 
28.
  Dim Ordnername, oFile 
29.
  Set oFile = FSO.OpenTextFile("C:\" & Date() & ".log",8,true) 
30.
  Set Ordner = FSO.GetFolder(Ordner) 
31.
 
32.
  oFile.WriteLine "-> " & Ordner.Name & " || Größe: " & Round(Ordner.Size/1024,2) & " Kilobytes" 
33.
  For Each Datei In Ordner.Files 
34.
    oFile.WriteLine "|-> " & Datei.Name & " || Größe: " & Round(Datei.Size/1024,2) & " Kilobytes" 
35.
  Next 
36.
  oFile.WriteLine " " 
37.
  oFile.Close 
38.
End Function 
39.
 
40.
Set FSO = CreateObject("Scripting.FileSystemObject")  
41.
' HIER DEN ORDNER ANGEBEN !! 
42.
Pfadangabe = "C:\Windows\Temp" 
43.
' HIER DEN ORDNER ANGEBEN !! 
44.
WriteLog1 Pfadangabe 
45.
GetSubFolders Pfadangabe
Bitte warten ..
Mitglied: bastla
08.09.2008 um 14:28 Uhr
Hallo chrizz-at und willkommen im Forum!

Abgesehen davon, dass Du Dich zwischen den Variablennamen "UnterVerzeichnis" (Zeile 25) und "UnterOrdner" (Zeile 28) entscheiden solltest, kann das nur klappen, wenn die Behandlung der "UnterOrdner.Files" ebenfalls in einer Schleife stattfindet - dazu das "Next" aus Zeile 27 unter das "Next" aus Zeile 30 verschieben.

Grüße
bastla

P.S.: Wenn Du Dein Script beim Posten zwischen < code>< /code>-Tags platzierst (natürlich ohne die Leerzeichen), lassen sich die genannten Zeilennummern viel leichter zuordnen ...

P.P.S.: Falls Du nicht nur die erste Unterverzeichnis-Ebene dokumentieren willst, benötigst Du eine Rekursion - siehe dazu die oben geposteten Scripts.
Bitte warten ..
Mitglied: bastla
08.09.2008 um 14:41 Uhr
@Iwan

Mein Ansatz sähe ähnlich aus:
01.
Ordnername = "C:\AddOn2" 
02.
 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
 
05.
' Log Datei erstellen 
06.
Set oFile = fso.OpenTextFile("C:\" & Date & ".log",8,true) 
07.
 
08.
' Referenz auf ein Verzeichnis holen 
09.
Set Verzeichnis = fso.GetFolder(Ordnername) 
10.
 
11.
' Ausgabe in Protokoll 
12.
oFile.WriteLine "Kopierte Daten vom " & Now 
13.
 
14.
'Rekursion starten 
15.
DoFolders Verzeichnis 
16.
 
17.
'Log abschließen 
18.
oFile.WriteBlankLines 3 
19.
oFile.Close 
20.
 
21.
Sub DoFolders(V) 
22.
oFile.WriteLine "-- Ordner: " & V.Path 
23.
oFile.WriteLine "--> " & V.Name & " || Größe: " & Round(V.Size/1024,2) & " Kilobytes" 
24.
 
25.
' Alle Dateien 
26.
For Each Datei In V.Files 
27.
	oFile.WriteLine "--> " & Datei.Name & " || Größe: " & Round(Datei.Size/1024,2) & " Kilobytes" 
28.
Next 
29.
oFile.WriteLine 
30.
 
31.
' Alle Unterverzeichnisse 
32.
For Each UnterVerzeichnis In V.SubFolders 
33.
	DoFolders UnterVerzeichnis 
34.
Next 
35.
End Sub
Grüße
bastla

[Edit] Ausgabe der Ordnergröße ergänzt [/Edit]
Bitte warten ..
Mitglied: Iwan
08.09.2008 um 14:57 Uhr
Dein Ansatz sieht natürlich wesentlich "eleganter" aus, aber beide führen zum Ziel
Bitte warten ..
Mitglied: bastla
08.09.2008 um 16:51 Uhr
@Iwan

"Sparsamer" trifft's vielleicht eher (ich habe einfach die Extraschleife für die Dateien im Ausgangsordner eingespart); letztlich sehe ich es aber eigentlich so wie Du: nicht der Weg ist hier das Ziel ...

Grüße
bastla
Bitte warten ..
Mitglied: Iwan
09.09.2008 um 07:50 Uhr
kurze Frage noch dazu:
kriegt man da irgendwie noch tausender Punkte mit rein?
Bitte warten ..
Mitglied: bastla
09.09.2008 um 08:29 Uhr
Hallo Iwan!

kriegt man da irgendwie noch tausender Punkte mit rein?
Wenn ohnehin nicht mehr mit den Ergebnissen gerechnet wird, kann auch gleich noch das Runden mit "FormatNumber()" erledigt werden:
01.
FormatNumber(Datei.Size/1024,2)
Die Darstellung mit Tausenderpunkten ist in der obigen Schreibweise von den Einstellungen der Systemsteuerung übernommen - um die Tausendertrennzeichen zu erzwingen:
01.
FormatNumber(Datei.Size/1024,2,,,True)
Grüße
bastla
Bitte warten ..
Mitglied: Iwan
09.09.2008 um 09:52 Uhr
super, klappt einwandfrei und sieht besser aus, danke
Bitte warten ..
Mitglied: chrizz-at
10.09.2008 um 09:47 Uhr
Ich danke euch recht herzlich! funktioniert einwandfrei!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Script zum Auflösen einer Ordnerstruktur und zurück gesucht (12)

Frage von websolutions zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...