nuzzi71
Goto Top

Grösse eines Windowspfades via Bat auslesen

Hallo,

kann man einen Windowspfad , wie z.B. D:\Daten, via Batch die Größe des Inhalts auslesen.

Beispiel:
Ich klicke rechte Maustaste auf den Pfad, dann Eigenschaften und er zeigt mir die Dateianzahl und die Größe an.

Dies möchte ich jetzt mit einer Bat Datei automatisch lösen, da es aufwendig ist, sich durch sämtliche Ordner jeweils durchzuklicken. Es kann auch eine VBA Lösung über Excel sein, also nicht unbedingt auf der Dos-Ebene.

Ist dies Möglich?

Grüße
Thomas

Content-Key: 100928

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

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

Member: Logan000
Logan000 Nov 04, 2008 at 08:26:27 (UTC)
Goto Top
Moin Moin

Um Verzeichnisgrößen auszuwerten benutzen wir WinDirStat.

Gruß L.
Member: bastla
bastla Nov 04, 2008 at 08:46:39 (UTC)
Goto Top
Hallo nuzzi71!

Eine (wenn auch nicht sehr schöne face-wink) Lösung mit Batch könnte so aussehen:
@echo off & setlocal
if "%~1"=="" goto :eof  
dir "%~1\">nul 2>nul || (echo Bitte nur fuer Ordner verwenden! & pause>nul & goto :eof)  
for /f "tokens=1,3" %%i in ('dir %1 /s 2^>nul^|findstr "Datei(en)"') do (set "Dateien=%%i" & set "Bytes=%%j")  
if %Dateien% gtr 0 (echo %Dateien% Dateien mit %Bytes% Bytes) else (echo Keine Dateien gefunden!)
Pause>nul
Wenn Du diese Batchdatei in den (versteckten) Ordner "%userprofile%\SendTo" legst, kannst Du im Explorer einen Ordner markieren und per Kontextmenü "Senden an" dafür die Batchdatei aufrufen.

Grüße
bastla
Member: nuzzi71
nuzzi71 Nov 04, 2008 at 09:09:20 (UTC)
Goto Top
Hallo,

@Logan000 Danke für den Tip. Ich werde die Software ausprobieren.

@bastla Der Code funktioniert soweit gut, nur muss ich ja trotzdem immer alle Pfade anklicken, das ich eigentlich vermeiden möchte.

Am einfachsten wäre es, ich würde Variablen bestimmten unter Excel VBA, die mir die Daten unter vorgegebenen Pfaden ermitteln und in eine Zelle schreiben.

zb: intGroesse = Größe von D:\Daten ' Befehl zum Ermitteln der Größe
int Anzahl = Anzahl Dateien von D:\Daten 'Befehl zum ermitteln der Anzahl

Cells(2,1) = intGröße
Cells(2,2) =intAnzahl

intGroesse = Größe von D:\Auswertungen usw....


Grüße Thomas
Member: bastla
bastla Nov 04, 2008, updated at Oct 18, 2012 at 16:36:29 (UTC)
Goto Top
Hallo nuzzi71!

Dass Du eine ganze Liste bearbeiten willst, hatte ich übersehen ...

... aber lässt sich natürlich trotzdem machen:
@echo off & setlocal
set "Erg=D:\Statistik.csv"  

REM DATA D:\Daten
REM DATA D:\Auswertungen
REM DATA D:\Whatever

if exist "%Erg%" del "%Erg%"  
for /f "tokens=2*" %%c in ('findstr /b /c:"REM DATA" "%0"') do call :ProcessDir "%%d"  
goto :eof

:ProcessDir
set Dateien=0
set Bytes=0
for /f "tokens=1,3" %%i in ('dir "%~1" /s /-c 2^>nul^|findstr "Datei(en)"') do (set "Dateien=%%i" & set "Bytes=%%j")  
>>"%Erg%" echo %1;%Dateien%;%Bytes%  
goto :eof
Die auszuwertenden Pfade sind (wie ab Zeile 4 gezeigt) im Batch selbst hinterlegt, können aber, auf Wunsch, auch einer zusätzlichen Textdatei entnommen werden.

Da offensichtlich Excel das Ziel ist, erfolgt die Ausgabe "importfreundlich" face-wink.
(Nur) Die Größenermittlung unmittelbar in Excel hatten wir übrigens hier. Die Ermittlung der Dateienanzahl müsste dann zusätzlich durch ein rekursiv aufzurufendes "Sub" erfolgen.

Grüße
bastla
Member: nuzzi71
nuzzi71 Nov 04, 2008 at 11:31:14 (UTC)
Goto Top
Hallo Bastla,

der Link zu dem anderen Thema hat mir wunderbar geholfen. Genau so ist es am einfachsten und perfekt. Ich verzichte da lieber auf die Anzahl der Dateien.

Danke nochmal

Gruß
Thomas