37414
Goto Top

Dateigrößen per Batch ermitteln

Hallo,

heute ein neues Problem face-smile

Ich habe eine Batch-Datei geschrieben, die mir alle Videodateien auflistet, die sich im Laufwerk "S" und dessen Unterverzeichnissen befinden.
Ich habe dabei die folgenden Dateitypen abgefragt: *.avi; *.mpg; *.mpeg; *.flv; *.swf; *.wmv; *.mov; *.mp4

Das klappt wunderbar!

Nun würde ich gerne einfach nur die Größenangaben dieser Dateien ermitteln.
Z.B. --> AVI-Dateien auf Laufwerk "S" = 188 MB
> MPG-Dateien auf Laufwerk "S" = 225 MB

usw.

Ich habe hier zwar Angaben zum Ermitteln von Dateigrößen gefunden über FOR-Schleifen, aber damit bekomme ich das von mir
gewünschte Ergebnis nicht hin.

Hat jemand von Euch eine Idee?

Danke und Gruss
Ingo
Kommentar vom Moderator Biber am Oct 20, 2009 um 16:44:33 Uhr
Menno, imebro,

Du weiißt noch nicht, wo Batchschnipsel hingehören? *tztz

Frage verschoben von "Windows" nach "Batches 4 All".

Content-Key: 127526

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

Printed on: April 19, 2024 at 09:04 o'clock

Member: bastla
bastla Oct 20, 2009 at 13:20:23 (UTC)
Goto Top
Hallo imebro!

Versuch es etwa so:
@echo off &setlocal
set "LW=S"  
set "Typ=AVI"  
for /f "tokens=3" %%i in ('dir /s /-c %LW%:\*.%Typ%^|findstr "Datei(en)"') do set "Gesamt=%%i"  
echo %Typ%Dateien auf Laufwerk "%LW%" = %Gesamt% Byte  
Das Ergebnis in %Gesamt% lautet auf "Byte"; soferne Du das nicht noch weiterverarbeiten willst, kannst Du beim "dir"den Schalter "/-c" weglassen - dann erhältst Du die Anzeige mit Tausendertrennzeichen.

Grüße
bastla
Mitglied: 37414
37414 Oct 21, 2009 at 07:10:51 (UTC)
Goto Top
Hallo bastla,

danke Dir - hat geklappt! face-smile

Ich habe die "set"-Angabe sowie die "echo %Typ%"-Angabe einfach um die restlichen 7 Dateiendungen erweitert und auch das ging grundsätzlich... allerdings mit einem falschen Ergebnis. Die Byte-Angabe bei den restlichen Datei-Endungen war immer die gleiche face-sad

So habe ich es gemacht:

@echo off &setlocal 

 REM ***** Ermittlung der Größe aller Videodateien (AVI, MPG, MPEG, FLV, SWF, WMV, MOV, MP4) *****

set "LW=S"   

set "Typ1=AVI"   
set "Typ2=MPG"  
set "Typ3=MPEG"  
set "Typ4=FLV"  
set "Typ5=SWF"  
set "Typ6=WMV"  
set "Typ7=MOV"  
set "Typ8=MP4"  
 
for /f "tokens=3" %%i in ('dir /s %LW%:\*.%Typ%^|findstr "Datei(en)"') do set "Gesamt=%%i"   
 
echo %Typ1%Dateien auf Laufwerk "%LW%" = %Gesamt% Byte > c:\xxx.txt  
echo %Typ2%Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ3%Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ4%Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ5%Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ6%Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ7%Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ8%Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  

Das Ergebnis ist folgendes:

AVIDateien auf Laufwerk "S" = 3.430.230.806 Byte
MPGDateien auf Laufwerk "S" = 130.015.201 Byte
MPEGDateien auf Laufwerk "S" = 130.015.201 Byte
FLVDateien auf Laufwerk "S" = 130.015.201 Byte
SWFDateien auf Laufwerk "S" = 130.015.201 Byte
WMVDateien auf Laufwerk "S" = 130.015.201 Byte
MOVDateien auf Laufwerk "S" = 130.015.201 Byte
MP4Dateien auf Laufwerk "S" = 130.015.201 Byte

Nur die AVI-Angabe stimmt - der Rest der Byte-Angaben ist immer gleich und das ist definitiv falsch!

Ich habe jetzt die Zeile mit "for..." auch 8 Mal rein geschrieben mit Typ 1-8.... klappt leider auch nicht.
Jetzt werden bei allen Datei-Endungen genau 50.709.851 Byte ausgegeben.

Der Code sieht jetzt so aus:

@echo off &setlocal 

REM ***** Ermittlung der Größe aller Videodateien (AVI, MPG, MPEG, FLV, SWF, WMV, MOV, MP4) *****

set "LW=S"   

set "Typ1=AVI"   
set "Typ2=MPG"  
set "Typ3=MPEG"  
set "Typ4=FLV"  
set "Typ5=SWF"  
set "Typ6=WMV"  
set "Typ7=MOV"  
set "Typ8=MP4"  

for /f "tokens=3" %%i in ('dir /s %LW%:\*.%Typ1%^|findstr "Datei(en)"') do set "Gesamt=%%i" > c:\xxx.txt  
for /f "tokens=3" %%i in ('dir /s %LW%:\*.%Typ2%^|findstr "Datei(en)"') do set "Gesamt=%%i" >> c:\xxx.txt  
for /f "tokens=3" %%i in ('dir /s %LW%:\*.%Typ3%^|findstr "Datei(en)"') do set "Gesamt=%%i" >> c:\xxx.txt  
for /f "tokens=3" %%i in ('dir /s %LW%:\*.%Typ4%^|findstr "Datei(en)"') do set "Gesamt=%%i" >> c:\xxx.txt  
for /f "tokens=3" %%i in ('dir /s %LW%:\*.%Typ5%^|findstr "Datei(en)"') do set "Gesamt=%%i" >> c:\xxx.txt  
for /f "tokens=3" %%i in ('dir /s %LW%:\*.%Typ6%^|findstr "Datei(en)"') do set "Gesamt=%%i" >> c:\xxx.txt  
for /f "tokens=3" %%i in ('dir /s %LW%:\*.%Typ7%^|findstr "Datei(en)"') do set "Gesamt=%%i" >> c:\xxx.txt  
for /f "tokens=3" %%i in ('dir /s %LW%:\*.%Typ8%^|findstr "Datei(en)"') do set "Gesamt=%%i" >> c:\xxx.txt  

echo %Typ1%-Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ2%-Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ3%-Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ4%-Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ5%-Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ6%-Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ7%-Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  
echo %Typ8%-Dateien auf Laufwerk "%LW%" = %Gesamt% Byte >> c:\xxx.txt  

start c:\xxx.txt

Und das Ergebnis so:

AVI-Dateien auf Laufwerk "S" = 50.709.851 Byte   
MPG-Dateien auf Laufwerk "S" = 50.709.851 Byte   
MPEG-Dateien auf Laufwerk "S" = 50.709.851 Byte   
FLV-Dateien auf Laufwerk "S" = 50.709.851 Byte   
SWF-Dateien auf Laufwerk "S" = 50.709.851 Byte   
WMV-Dateien auf Laufwerk "S" = 50.709.851 Byte   
MOV-Dateien auf Laufwerk "S" = 50.709.851 Byte   
MP4-Dateien auf Laufwerk "S" = 50.709.851 Byte   

Wie bekomme ich das hin?

Danke,
Ingo
Member: bastla
bastla Oct 21, 2009 at 11:08:14 (UTC)
Goto Top
Hallo imebro!

Zur Verzierung noch eine zweite Schleife face-wink:
@echo off &setlocal 

REM ***** Ermittlung der Größe aller Videodateien (AVI, MPG, MPEG, FLV, SWF, WMV, MOV, MP4) *****

set "LW=S"   
set "Typen=AVI MPG MPEG FLV SWF WMV MOV MP4"  
set "Log=C:\xxx.txt"  

if exist "%Log%" del "%Log%"  
for %%t in (%Typen%) do (
    for /f "tokens=3" %%i in ('dir /s %LW%:\*.%%t^|findstr "Datei(en)"') do echo %%t-Dateien auf Laufwerk "%LW%" = %%i Byte>>"%Log%"  
)
Diese Variante ist leider ungetestet ...

Grüße
bastla
Mitglied: 37414
37414 Oct 21, 2009 at 12:28:22 (UTC)
Goto Top
Hi Bastla,

habe es eben getestet und es funktioniert auch...

Nur gibt es jede einzelne Datei mit ihrer Größe extra aus.
Besser wäre es, wenn es alle AVI, alle MPG... etc. jeweils zusammen zählen würde.

Geht das auch?

Nochmals danke!
Ingo
Member: bastla
bastla Oct 21, 2009 at 14:02:58 (UTC)
Goto Top
Hallo imebro!

Bringen wir's zu einem (hoffentlich guten) Ende:
@echo off & setlocal enabledelayedexpansion

REM ***** Ermittlung der Größe aller Videodateien (AVI, MPG, MPEG, FLV, SWF, WMV, MOV, MP4) *****

set "LW=S"   
set "Typen=AVI MPG MPEG FLV SWF WMV MOV MP4"  
set "Log=C:\xxx.txt"  

if exist "%Log%" del "%Log%"  
for %%t in (%Typen%) do (
    for /f "tokens=3" %%i in ('dir /s %LW%:\*.%%t^|findstr "Datei(en)"') do set "Gesamt=%%i"   
    echo %%t-Dateien auf Laufwerk "%LW%" = !Gesamt! Byte>>"%Log%"  
)
Grüße
bastla
Mitglied: 37414
37414 Oct 21, 2009 at 17:05:17 (UTC)
Goto Top
Hi bastla,

vielen Dank für Deine erneute Mühe!

Bin jetzt zu Hause und werde die Batch gleich morgen Früh testen.
Wäre toll, wenn´s jetzt klappt.

Thanks,
Ingo
Mitglied: 37414
37414 Oct 22, 2009 at 10:04:26 (UTC)
Goto Top
Hallo bastla,

vielen Dank - hat super geklappt.

Ich müßte jetzt alle gefundenen Videodateien (mit allen Endungen) vom gesamten Laufwerk "S" ins Verzeichnis "S:\Archiv\ÖA\Videoarchiv" kopieren.
Dabei soll später jede Datei NUR EINMAL vorhanden sein.
In einem späteren Vorgang sollen die ursprünglichen Dateien (die ja jetzt alle zusammen in einem Verzeichnis liegen) dann gelöscht werden.

Kannst mir bitte dabei auch noch helfen? face-smile

Danke und Gruss
Ingo
Member: bastla
bastla Oct 22, 2009 at 10:32:58 (UTC)
Goto Top
Hallo imebro!

Da das ein ganz anderes Thema ist, bitte einen neuen Thread eröffnen und dort auch gleich näher beschreiben, wie vor allem "NUR EINMAL" zu verstehen ist (welche Datei soll erhalten bleiben, wenn es mehrere gleichnamige gibt) ...

Grüße
bastla
Mitglied: 37414
37414 Oct 22, 2009 at 12:48:39 (UTC)
Goto Top
Hallo bastla,

danke für den Hinweis... hast natürlich Recht.
Habe die Frage jetzt im Thread: "Alle Videodateien per Batch kopieren" gestellt und auch entspr. ergänzt.

Dieser Thread hier ist somit gelöst!

Vielen Dank!
Ingo