Verzeichnisgröße auslesen, dabei Ordner exkludieren.
Hallo,
ich habe folgendes Problem:
Ich habe ein Batch, welches mir die Größe eines bestimmten Verzeichnisses ausgibt.
Nun möcht ich aber ggf., das ein oder mehrere Ordner diese Verzeichnisses bei der Berechnung ausgeschlossen werden soll(en).
Hat jemand einen Tipp?
Vielen Dank im Voraus
Jörg
ich habe folgendes Problem:
Ich habe ein Batch, welches mir die Größe eines bestimmten Verzeichnisses ausgibt.
@echo off
set "Ordner=C:\"
set "temp=%temp%\temp.vbs
mode con lines=6 cols=50
echo WScript.Echo Int(CreateObject("Scripting.FileSystemObject").GetFolder(WScript.Arguments(0)).Size/1024/1024+.99)>%temp%
for /f %%i in ('cscript //nologo %temp% "%Ordner%"') do set Gr=%%i
echo.
echo Im Home-Verzeichnis %Ordner% sind %Gr% MB belegt.
echo.
echo Bitte beliebige Taste druecken zum Beenden.
echo.
del %temp%
pause > nul
Nun möcht ich aber ggf., das ein oder mehrere Ordner diese Verzeichnisses bei der Berechnung ausgeschlossen werden soll(en).
Hat jemand einen Tipp?
Vielen Dank im Voraus
Jörg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 230395
Url: https://administrator.de/contentid/230395
Ausgedruckt am: 23.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Jörg, Willkommen im Forum!
Folgenden VBS-Code kannst du dir ja in die Batch umsetzen:
(die ausgeschlossene Ordner stehen in Zeile 2 in einem komma getrennten Array)
Der Code nimmt einfach erst die Gesamtgröße aller Ordner und dann die Größe der ausgeschlossenen Ordner und zieht diese dann von der Gesamtgröße ab.
Noch als Hinweis, deine Batch verändert den %TEMP% Pfad von Windows in der Batch, hier solltest du eine andere Variable verwenden als %TEMP%.
Nachtrag: Die VBS in Batch umgesetzt (ausgeschlossene Ordner stehen in Zeile 8):
ansonsten lässt sich dich Größe auch ohne VBS ermitteln:
Grüße Uwe
Folgenden VBS-Code kannst du dir ja in die Batch umsetzen:
(die ausgeschlossene Ordner stehen in Zeile 2 in einem komma getrennten Array)
strOrdner = WScript.Arguments(0)
arrOrdnerExclude = Array(strOrdner & "\diverses", strOrdner & "\NocheinOrdnerdernichsoll")
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
allSize = fso.GetFolder(strOrdner).Size
excludedSize = 0
For i = 0 To UBound(arrOrdnerExclude)
excludedSize = excludedSize + fso.GetFolder(arrOrdnerExclude(i)).Size
Next
totalsize = Round((allSize - excludedSize)/(1024*1024),2)
WScript.Echo totalsize
Noch als Hinweis, deine Batch verändert den %TEMP% Pfad von Windows in der Batch, hier solltest du eine andere Variable verwenden als %TEMP%.
Nachtrag: Die VBS in Batch umgesetzt (ausgeschlossene Ordner stehen in Zeile 8):
@echo off & setlocal
set "Ordner=C:\Ordner"
mode con lines=6 cols=50
set "tempfile=%temp%\tempfile.vbs"
del /q "%tempfile%" >nul
echo strOrdner = wscript.Arguments(0)>>"%tempfile%"
echo arrOrdnerExclude ^= Array(strOrdner ^& "\diverses", strOrdner ^& "\diesUndDas")>>"%tempfile%"
echo Set fso ^= WScript.CreateObject("Scripting.Filesystemobject")>>"%tempfile%"
echo allSize ^= fso.GetFolder(strOrdner).Size>>"%tempfile%"
echo excludedSize ^= ^0>>"%tempfile%"
echo For i ^= 0 To UBound(arrOrdnerExclude)>>"%tempfile%"
echo excludedSize ^= excludedSize + fso.GetFolder(arrOrdnerExclude(i)).Size >>"%tempfile%"
echo Next>>"%tempfile%"
echo totalsize ^= Round((allSize - excludedSize)/(1024*1024),2)>>"%tempfile%"
echo WScript.Echo totalsize>>"%tempfile%"
for /f "delims=" %%i in ('cscript //NOLOGO "%tempfile%" "%Ordner%"') do set Gr=%%i
echo.
echo Im Home-Verzeichnis %Ordner% sind %Gr% MB belegt.
echo.
echo Bitte beliebige Taste druecken zum Beenden.
echo.
del "%tempfile%"
pause > nul
@echo off & setlocal enabledelayedexpansion
set "Ordner=C:\temp"
set /a totalsize=0
for /r "%Ordner%" %%a in (*.*) do @(
echo %%a | findstr /BVI "%ordner%\diverses" >nul && set /a totalsize +=%%~za
)
set /a totalsize=%totalsize%/(1024*1024)
echo %totalsize%
habe ich gerade oben nachgetragen