derparte
Goto Top

Dateien und Verzeichnisse inventarisieren-auflisten?

Moin,

ich suche ein Programm/Tool mit dem ich eine Festplatte/Partition auflisten/inventarisieren kann. Gibt es soetwas? Mit dem CMD Befehlen listet der rechner mir alles in einer txt datei auf, dieses ist aber recht unübersichtlich.

Mir wäre die auflistung recht dateiname - dateipfad oder dateipfad\dateiname. Eventuell noch die größe dahinter. Oder kann man das über ein Excel VB script realisieren?

Content-Key: 68644

Url: https://administrator.de/contentid/68644

Printed on: April 24, 2024 at 23:04 o'clock

Mitglied: 25110
25110 Sep 14, 2007 at 07:45:52 (UTC)
Goto Top
Hallo,

DirTree wäre was, ist Freeware.

mfg
Member: hajowe
hajowe Sep 14, 2007 at 08:16:31 (UTC)
Goto Top
Schau dir mal treesize an.
Da sind auch exports nach xls und xlm möglich.
Member: DerParte
DerParte Sep 14, 2007 at 10:36:03 (UTC)
Goto Top
Die Programme machen nicht wirklich das was ich suche. Mit dem Tool Mp3Tag kann man das für audio dateien machen lassen aber leider nicht für andere dateien gibt es nicht auch soetwas für alle dateien?
Member: DerParte
DerParte Sep 14, 2007 at 10:38:08 (UTC)
Goto Top
Oder wie kann man dieses makro für excel umgestallten das es das verzeichnisse und dateinamen auflistet?

Sub DateinamenAuflisten()
'Dateinamen in einem bestimmten Verzeichnis auflisten
'Die Angabe des Verzeichnises erfolgt in DOS Konvention
'Eingefügt werden die Daten ab der aktiven Zelle

Dim Dateiname As String, i As Integer
Dateiname = Dir$("c:\*.*") 'Hier Verzeichnis und Datei angeben
Do While Dateiname <> ""
ActiveCell.Offset(i, 0) = Dateiname
i = i + 1
Dateiname = Dir$()
Loop

End Sub
Member: bastla
bastla Sep 14, 2007 at 11:23:26 (UTC)
Goto Top
Hallo DerParte!

Auf die Schnelle: Die folgende CMD-Zeile (Eingabe direkt an der Kommandzeile) schreibt zum Testen den Inhalt des Desktops in eine Textdatei, die Du dann in Excel importieren kannst (Trennzeichen Semikolon):
for /f "delims=" %i in ('dir "%userprofile%\Desktop" /s /b') do @echo %i;%~zi >> C:\DesktopInhalt.txt  
Für das gesamte Laufwerk C: wäre das dann
for /f "delims=" %i in ('dir C:\*.* /s /b') do @echo %i;%~zi >> C:\InhaltC.txt  
Allerdings solltest Du dann schon Excel 2007 für den Import zur Verfügung haben (da ansonsten bei 65536 Einträgen Schluss ist).

Grüße
bastla
Member: Biber
Biber Sep 14, 2007 at 16:42:17 (UTC)
Goto Top
Moin DerParte,

ich möchte lieber, statt hier eine Skriptlösung zu posten, eher anregen, diesen Plan zu überdenken.
Und danach als Dönekens fallenzulassen.

Die Auflistung von Unterverzeichnissen und gar Dateien machte früher bei 5,25-Zoll-Floppys Sinn, auch noch bei 3,5-Zoll-Disketten.
Bei CDs auch nur dann, wenn dort 16 Musikstücke drauf sind - selbst eine Katalogisierung dieser Beipack-CDs der Tankstellen-PC-Zeitschriften wäre heutzutage eine Aufgabe, für die sich nicht mal umgeschulte Postbeamte begeistern könnten.
Auf einem Windows-Rechner ist es total absurd, weil die vermeintliche Strukturierung der Partitionen/Festplatte nur in Ausnahme-Fällen etwas aussagt.

Okay, wenn Du Dir Selber eine Struktur angelegt hast für gleichartige Dateien (Musik, Urlaubsfotos, Excel-Dienstpläne oder Word-Protokolldateien von F.D.P.-Ortsverein-Sitzungen...) - in diesen paar konstruierbaren Fällen bringt die Katalogisierung von bestimmten Verzeichnissen vielleicht etwas. (Wenn auch nur die Erkenntnis: "Upps, am 13. April hatte ich das Protokoll aber noch...").

Für Verzeichnisse, die "c:\Windows\System32" oder auch "c:\temp" heißen oder "c:\Gemeinsame Dateien".... was willst Du da je wiederfinden???
Oder wie rekonstruieren, wozu eine bestimmte DLL gehört?

Abgesehen davon... rein rechnerisch - bei 100000 Dateien in 14874 Verzeichnissen auf Festplatte C: .. wenn Du das eben mal absuchen willst nach einer Datei.... Du wirst sicherlich keine Listen durchblättern. Weder in Aktenordnern noch am Bildschirm.

Kurz gefasst: Eine Protokollierung der vorgebenen Windows-Rechner-Plattenstruktur bringt Dir gar nichts.
Aber Du kannst punktuell für bestimmte Themen/Projekte eigene Strukturen entwickeln.
Oder für bestimmte Sachverhalte bestehende Tools nutzen (für MP3s, für Projekte, zur Dokumentenverwaltung, zur Versionsverwaltung, zur Inventarisierung installierter Software, ...)

Grüße
Biber
Member: specialsymbol
specialsymbol Feb 03, 2009 at 21:39:18 (UTC)
Goto Top
Hallo!

Erstmal vielen Dank an bastla, was er hier gepostet hat ist so ziemlich genau die Lösung meines Problems.

Allerdings hätte ich noch drei Fragen dazu:

1. Wie kriege ich weitere Informationen vom dir-Befehl geliefert? Momentan ist ja nur der Pfad mit Dateinamen sowie die Dateigröße in der Ausgabe enthalten.
Ich hätte gerne noch das Datum, ebenfalls durch ein Trennzeichen separiert.

2. Kann ich die Ausgabe des dir-Befehls auch anders formatieren? Zum einen hätte ich gerne einen Tabulator als Trennzeichen, zum anderen wäre es super wenn ein Trennzeichen zwischen Dateiname und dem dazugehörigen Pfad steht.

3. Ich verstehe ehrlich gesagt den Befehl nicht wirklich, habe aber den Eindruck dass die Ausgabe Zeilenweise erfolgt (d.h. für jede gefundene Datei eine Operation). Kann ich noch zusätzlich ein Programm aufrufen welches mit der jeweils aktuell bearbeiteten Datei etwas macht, beispielsweise eine Prüfsumme berechnet? Dazu müßte mir jemand erklären wie ich den kompletten Dateipfad (mit Namen) als Parameter erhalte und weitergeben kann und die Ausgabe in dieselbe Datei bekomme.
Beispielsweise
java -jar jacksum.jar "Dateiname komplett mit Pfad hier" > Ausgabe hierhin  


Das ganze soll mir helfen meine Festplatte aufzuräumen. Ich habe viele Dateien als Mehrfachkopie herumfliegen, teilweise mit anderen Dateinamen (oft nur wie in "Dateiname (1).ext" ), teilweise mit gleicher Größe, gleichem Namen (in anderen Verzeichnissen) aber unterschiedlichem Inhalt (Sammlungen von Savegames beispielsweise und etliche Sicherheitskopien davon).

Optimal wäre es natürlich wenn er, sollten die Prüfsummen übereinstimmen, alle identischen Dateien bis auf die älteste löscht. Aber das kriege ich evl. mit einer geschickt sortierten und zurechtgestutzten Tabelle hin (so ist mein Plan).

Vielen Dank schonmal!
specialsymbol
Member: bastla
bastla Feb 03, 2009 at 22:01:45 (UTC)
Goto Top
Hallo specialsymbol!
Ich verstehe ehrlich gesagt den Befehl nicht wirklich
Vielleicht wird's besser, wenn Du die Online-Hilfe konsultierst:
dir /?
for /?
Zu 1.-3.: Lässt sich machen - der Batch sähe etwa so aus:
@echo off & setlocal
for /f "delims=" %%i in ('dir C:\*.* /s /b') do (  
    echo %%~ti	%%~zi	%%~dpi	%%~nxi
    java -jar jacksum.jar "%%i" >> Ausgabe hierhin  
)
Es gibt allerdings für die Ermittlung von MD5-Summen bessere Alternativen (etwa MD5Summer) und vor allem zum Entfernen von Duplikaten ist eines der vielen (Freeware-)Programme (zB CloneSpy) einer Batch-Lösung vorzuziehen.

Grüße
bastla
Member: specialsymbol
specialsymbol Feb 03, 2009 at 22:08:11 (UTC)
Goto Top
Nein, die Verständnisprobleme liegen eher bei den ganzen Parametern, deren Funktionen etc. Ich lese mir gerade eine WikiBook "Batchbefehle" durch welches hier unter Anleitungen erwähnt wurde, allerdings fehlt da schon der Befehl "delims="- ich weiß also nicht was der macht.

Aha, sehe gerade in der for-Hilfe steht da was drüber (wußte nicht das for /? eine eigene Hilfe ergibt).


Vielen Dank! Ich probiere das gleich mal aus. Und danke für den Tipp mit CloneSpy- werde ich auch testen. Allerdings habe ich so auch eine Calc-Tabelle mit den ganzen Dateinamen und den zugehörigen Hashwerten, finde ich auch ganz nett.

Gruß
specialsymbol
Member: bastla
bastla Feb 03, 2009 at 22:13:45 (UTC)
Goto Top
Kleine Starthilfe zu "delims=": Damit wird kein Trennzeichen festgelegt - so erhältst Du den kompletten Dateipfad in %%i (anderenfalls würde, da per Default das Leerzeichen als Trennzeichen gilt, nur der Teil des Pfades/Dateinamens bis zum ersten Leerzeichen ausgelesen).

Grüße
bastla
Member: specialsymbol
specialsymbol Feb 04, 2009 at 15:13:29 (UTC)
Goto Top
Super, danke! Hab mich schon gewundert und das Problem mit den Leerzeichen in Pfaden hatte ich auch schonmal. So geht das also.

Hier ist jetzt die fertige Batchdatei, sie funktioniert und läuft gerade durch:
@echo off & setlocal
for /f "delims=" %%i in ('dir "H:\Sicherung 2008\*.*" /a:-d /s /b') do (  
    <nul set /p =%%~dpi	%%~nxi	%%~zi	%%~ti	%%~ni	%%~xi	>> e:\liste.txt
    call javaw -jar jacksum.jar -a md5+crc32 -s \t -t "default" -E hexup -F "#FILENAME #SEPARATOR #FILESIZE bytes #SEPARATOR #TIMESTAMP #SEPARATOR #ALGONAME{0}: #CHECKSUM{0} #SEPARATOR #ALGONAME{1}: #CHECKSUM{1}" "%%i" >> e:\liste.txt      
)

Ich habe auch den Zeilenumbruch weggekriegt zwischen den einzelnen Ausgaben Echo ohne Zeilenumbruch und ähnliche Spielereien

Die Ausgabe sieht so allerliebst aus:
H:\Sicherung 2008\	Gesamtliste.txt	375465	17.11.2008 15:01	Gesamtliste	.txt	H:\Sicherung 2008\Gesamtliste.txt 	 375465 bytes 	 17.11.2008 15:01	md5: 81389D1D1BC283D5AB54D87A699C94D2	 crc32: C4752B067008F578 	 

Die Dateigröße und das Datum habe ich nur zum Spaß doppelt, die Spalten kann ich später in OpenOffice.Calc einfach löschen. Kostet ja keine Zeit (vielleicht 5 Sekunden zum markieren und löschen).

Danke nochmal für die große Hilfe!