Batch Datei die Ordnergröße ermittelt?
Bin noch relativ neu im Batch Dateien schreiben. Habe nun Online überall gesucht. Ich würde mir gerne die Größe eines Ordners ausgeben lassen. Bisher habe ich nur Code gefunden, welche die Ordnergrößen aller Unterordner ausgibt. Ich möchte allerdings nur die Größe eines bestimmten Ordners haben.
3 Antworten
kein Akt
@echo off
::filtere aus der normelen anzeige von DIR die zeile,welche...
:: mit mindestens einem Leerzeichen beginnt
:: gefolgt von mindestens einer Ziffer
:: gefolgt von belibigen Zeichen
:: Bytes am Ende der Zeile
::...es gibt für jeden ordner nur eine solche Zeile:" 0 Datei(en), 0 Bytes"
::...bei recursiver (/s) Auflistung hat die letzte so gefilterte Zeile den gesamtwert
dir /s "C:\Users\Erzesel Secure\Testfolder"|findstr /irc:"^ *[0-9][0-9]*.*Bytes$"
::die zuweisung an Variablen ist kein Akt..., der letzte Wert bleibt in der Variable
set "Folder=C:\Users\Erzesel Secure\Testfolder"
for /f "tokens=1,3" %%a in ('dir /s "%Folder%" ^|findstr /irc:"^ *[0-9][0-9]*.*Bytes$"') do (
set "FileCount=%%a"
set "FolderSize=%%b"
)
echo %FileCount% Dateien im Verzeichnis "%Folder%"
echo gesamt %FolderSize:.=% Bytes
pause
allerdings wird es Bei eventuell folgenden Berechnungen Probleme geben, wenn eine Zahl 2147483647 überschreitet...
Lege Batch zu den Akten und verwende Powershell.
(gci "C:\Users\Erzesel Secure\Testfolder" -r -ea sil | measure Length -Sum).Sum
Dieser Befehl:
dir /s/a "path/to/directory"
listet die enthaltenen Dateien und schlussendlich auch die verbrauchte Speichergröße auf.
Du könntest den Wert aus der Ausgabe herausparsen (siehe hier).
Ich persönlich würde statt Batch eher PowerShell verwenden.
$folder = "path/to/directory"
$size = (Get-ChildItem -Path $folder -File -Recurse | Measure-Object -Property Length -Sum).Sum
Write-Output $size
# in MB
Write-Output ($size / 1MB)
Also wie man das in der Batch-Datei macht kann ich dir nicht sagen, an sich kannst du dafür aber sicher die Windows-APU benutzen und über alle Verzeichnisse drüberiterieren
Muss dazu sagen ich würde mir gerne die Größe des Ordners in eine Variable packen