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-ID: 100928

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

Ausgedruckt am: 17.11.2024 um 09:11 Uhr

Logan000
Logan000 04.11.2008 um 09:26:27 Uhr
Goto Top
Moin Moin

Um Verzeichnisgrößen auszuwerten benutzen wir WinDirStat.

Gruß L.
bastla
bastla 04.11.2008 um 09:46:39 Uhr
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
nuzzi71
nuzzi71 04.11.2008 um 10:09:20 Uhr
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
bastla
bastla 04.11.2008, aktualisiert am 18.10.2012 um 18:36:29 Uhr
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
nuzzi71
nuzzi71 04.11.2008 um 12:31:14 Uhr
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