Ordnergröße protokollieren ?
hallo zusammen,
ich suche nach einem tool, batch od. ähnlichem um die größe eines ordners zu protokollieren.
Zum Beispiel:
\\ordner1\uordner1
die größe von uordner1 soll täglich um xx:xx Uhr protokolliert werden
ob das jetzt in einem txt od. sonstigem format passiert ist egal.
ich suche nach einem tool, batch od. ähnlichem um die größe eines ordners zu protokollieren.
Zum Beispiel:
\\ordner1\uordner1
die größe von uordner1 soll täglich um xx:xx Uhr protokolliert werden
ob das jetzt in einem txt od. sonstigem format passiert ist egal.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 69462
Url: https://administrator.de/contentid/69462
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
7 Kommentare
Neuester Kommentar
Für ganze Laufwerke könnte das ganze in Batchform so aussehen:
Somit gibts ein schönes Logfile. "<Laufwerk>" musst du natürlich durch den Laufwerksbuchstaben ersetzen.
echo <Laufwerk> >> c:\logfile_ordnergroesse.txt
echo %date%,%time% >> c:\logfile_ordnergroesse.txt
dir <Laufwerk> | find /i "Bytes " >> c:\logfile_ordnergroesse.txt
echo. >> c:\logfile_ordnergroesse
Somit gibts ein schönes Logfile. "<Laufwerk>" musst du natürlich durch den Laufwerksbuchstaben ersetzen.
Moin schregi82,
der Effekt, den Du beschreibst, kommt durch einen unabsichtlichen Flüchtigkeitsfehler TuXHunt3Rs.
Der "deutsche" DIR-Befehl bringt in der Anzeige als letztes zwei Zeilen mit dem Wort "Bytes".
Und der "Find"-Befehl mit dem versehentlichen Leerzeichen nach dem Wort "Bytes " liefert die falsche Zeile.
Demo am CMD-Prompt:
Wie Du siehst, liefert Variante 2 (mit find "Bytes ") genau die für Dich uninteressante Zeile.
Variante 3 mit dem etwas pfiffigeren FindStr-Utility mit "Bytes$" [=dem Wort "Bytes" am Zeilenende] wäre für Deinen Zweck besser.
Ansonsten passt TuX'ens Strategie schon.
Grüße
Biber
P.S. Für eine programmtechnische Weiterverarbeitung wäre u.U. der DIR-Parameter "-C" nützlich.
Der lässt die Tausender-Trennpunkte weg.
P.P.S. Wenn Du hier im Forum nach "DirSize" suchst, findest Du ein paar ähnliche Skriptchen und auch Verweise auf Utilities wie du.exe (DiskUsage), die etwas flinker sind.
der Effekt, den Du beschreibst, kommt durch einen unabsichtlichen Flüchtigkeitsfehler TuXHunt3Rs.
Der "deutsche" DIR-Befehl bringt in der Anzeige als letztes zwei Zeilen mit dem Wort "Bytes".
Und der "Find"-Befehl mit dem versehentlichen Leerzeichen nach dem Wort "Bytes " liefert die falsche Zeile.
Demo am CMD-Prompt:
(=23:36:57 D:\temp=)
>dir test|find "Bytes"
9 Datei(en) 6.691.869 Bytes
15 Verzeichnis(se), 53.704.204.288 Bytes frei
(=23:37:14 D:\temp=)
>dir test|find "Bytes "
15 Verzeichnis(se), 53.704.204.288 Bytes frei
(=23:37:19 D:\temp=)
>dir test|findstr "Bytes$"
9 Datei(en) 6.691.869 Bytes
Variante 3 mit dem etwas pfiffigeren FindStr-Utility mit "Bytes$" [=dem Wort "Bytes" am Zeilenende] wäre für Deinen Zweck besser.
Ansonsten passt TuX'ens Strategie schon.
Grüße
Biber
P.S. Für eine programmtechnische Weiterverarbeitung wäre u.U. der DIR-Parameter "-C" nützlich.
Der lässt die Tausender-Trennpunkte weg.
>dir /-c test|findstr "Bytes$"
9 Datei(en) 6691869 Bytes
Hallo schregi82
Hier der Code des Powershell-Scripts:
Die folgenden Zeilen musst du noch anpassen (die Hochkommas " stehen lassen!):
Die PowerShell gibts gratis bei Microsoft zum Download, bitte auf die richtige Sprachversion und auf das Betriebssystem achten! PowerShell-Scripts haben die Dateiendung *.ps1
Vor dem Ausführen des Scripts musst du folgende Zeile in der PowerShell eingeben, um Scripts zu erlauben:
PowerShell-Scripts können nicht durch Doppelklick ausgeführt werden. Du musst in der Konsole in den entsprechenden Ordner wechseln (mit "cd") und dort das Script folgendermassen starten:
D.h. du musst einfach ein ".\" vornedran machen.
Beschäftige dich doch bei dieser Gelegenheit gleich ein wenig mit der PowerShell, das Teil rockt!
EDIT:
ACHTUNG!!!!
Das Script zählt nur die Grössen aller MDB-Files zusammen, die in dem angegebenen Ordner liegen! MDBs in weiteren Unterordnern werden nicht berücksichtigt!
Hier der Code des Powershell-Scripts:
# ***********************************
# LogMDBSize.ps1
# -----------------
# Counts the sizes of all MDB-Files in the specified folder
# and write it into a specified logfile
#
# Language: PowerShell v1.0
# History:
# | TuXHunT3R - 25.09.2007 - New Script
#
# ***********************************
# Konsole leeren
clear-host
# Variablen setzen (GroesseAllerDateien als Integer, da mit der Zahl gerechnet werden muss)
$ordner = "<Hier den entsprechenden Ordner eingeben>"
$Logfile = "<Hier den Pfad zum Logfile einsetzen>"
[System.Int32]$GroesseAllerMDBs = 0
[System.Int32]$GroesseAllerMDBsKB = 0
[System.Int32]$GroesseAllerMDBsMB = 0
$DatumUndZeit = get-date -format g
# Alle Dateigrössen ausgeben, rsp. in Textfile abfüllen
get-childitem $Ordner\*.mdb | foreach-object -process { $_.length } | out-file C:\windows\temp\dateigroessen.txt
# Alle Grössen zusammenzählen
get-content C:\windows\temp\dateigroessen.txt | foreach-object -process { $GroesseAllerMDBs = $GroesseAllerMDBs + $_ }
#Umrechnen
$GroesseAllerMDBsKB = $GroesseAllerMDBs / 1024
$GroesseAllerMDBsMB = $GroesseAllerMDBsKB / 1024
# Ins Logfile schreiben
$DatumUndZeit | out-file $Logfile -append
$Ordner | out-file $Logfile -append
$GroesseAllerMDBsMB | out-file $Logfile -append
"Groesse aller MDB-Files in diesem Ordner in Megabytes (gerundet)" | out-file $Logfile -append
"----------------------------------------------------------------" | out-file $Logfile -append
# Ausgabe
write-host "LogMDBSize.ps1"
write-host "=============="
write-host " "
$Ordner
write-host "--------------"
write-host "Die Groesse aller MDBs in diesem Ordner wurde geloggt! Logfile:"
$Logfile
write-host " "
write-host "Schoenen Tag noch!"
write-host "Coded by TuXHunT3R"
write-host " "
# temporäres Logfile schrotten
get-childitem C:\windows\temp\*dateigroessen*.txt -recurse | remove-item
Die folgenden Zeilen musst du noch anpassen (die Hochkommas " stehen lassen!):
$ordner = "<Hier den entsprechenden Ordner eingeben>"
$Logfile = "<Hier den Pfad zum Logfile einsetzen>"
Die PowerShell gibts gratis bei Microsoft zum Download, bitte auf die richtige Sprachversion und auf das Betriebssystem achten! PowerShell-Scripts haben die Dateiendung *.ps1
Vor dem Ausführen des Scripts musst du folgende Zeile in der PowerShell eingeben, um Scripts zu erlauben:
set-executionpolicy unrestricted
PowerShell-Scripts können nicht durch Doppelklick ausgeführt werden. Du musst in der Konsole in den entsprechenden Ordner wechseln (mit "cd") und dort das Script folgendermassen starten:
.\scriptname
D.h. du musst einfach ein ".\" vornedran machen.
Beschäftige dich doch bei dieser Gelegenheit gleich ein wenig mit der PowerShell, das Teil rockt!
EDIT:
ACHTUNG!!!!
Das Script zählt nur die Grössen aller MDB-Files zusammen, die in dem angegebenen Ordner liegen! MDBs in weiteren Unterordnern werden nicht berücksichtigt!