Ordner-Icon auf Grundlage der Ordnergröße ändern : Laufzeit Verkürzung bei Bestimmung der Ordnergröße
Moin,
ich versuche mit Hilfe einer Batch-File die Größe von Ordnern zu bestimmen und ab einer bestimmten Größe das Icon des Ordners zu ändern.
Mein erster Versuch hat auch funktioniert, nur leider hat das Durchlaufen der Struktur mehrere Stunden gedauert. Aus diesem Grund habe ich das Programm etwas angepasst.
Die Anpassung zielt darauf ab, dass ich nicht die gesamte Größe des Ordners bestimme, sondern schon bei einer bestimmten Größe die For-Schleife abbreche. Durch meine Recherchen in dem Forum habe ich jedoch gehört, dass dies eine schlechte Idee ist, da es nicht vorgesehen ist die For-Schleifen abzubrechen.
Hat vielleicht jemand eine Idee wie man das Problem lösen kann?
Der Code des ersten Versuches (Laufzeit mehrere Stunden):
Mein Lösungsansatz zum Abkürzen (Abbrechen der FOR-Schleife zum Ermitteln der Ordnergröße funktioniert noch nicht):
ich versuche mit Hilfe einer Batch-File die Größe von Ordnern zu bestimmen und ab einer bestimmten Größe das Icon des Ordners zu ändern.
Mein erster Versuch hat auch funktioniert, nur leider hat das Durchlaufen der Struktur mehrere Stunden gedauert. Aus diesem Grund habe ich das Programm etwas angepasst.
Die Anpassung zielt darauf ab, dass ich nicht die gesamte Größe des Ordners bestimme, sondern schon bei einer bestimmten Größe die For-Schleife abbreche. Durch meine Recherchen in dem Forum habe ich jedoch gehört, dass dies eine schlechte Idee ist, da es nicht vorgesehen ist die For-Schleifen abzubrechen.
Hat vielleicht jemand eine Idee wie man das Problem lösen kann?
Der Code des ersten Versuches (Laufzeit mehrere Stunden):
for /d /r "DATEIPFAD" %%t in (*) do (
set datei="%%~t"
for /f "tokens=1-3" %%i in ('dir !datei! /-C /S ^|find "Datei(en)" ^|find "Bytes"') do set dateigroesse=%%k
if !dateigroesse! GEQ 20000 (
attrib -r "%%~t"
attrib -s -h -r "%%~t\Desktop.ini"
echo [.ShellClassInfo] > "%%~t\Desktop.ini"
echo IconResource=%SystemRoot%\system32\SHELL32.dll,266 >> "%%~t\Desktop.ini"
echo [ViewState] >> "%%~t\Desktop.ini"
echo Mode= >> "%%~t\Desktop.ini"
echo Vid= >> "%%~t\Desktop.ini"
echo FolderType=Generic >> "%%~t\Desktop.ini"
attrib +s +h +r "%%~t\Desktop.ini"
attrib +r "%%~t"
set dateigroesse=0
) else (
attrib -r "%%~t"
attrib -s -h -r "%%~t\Desktop.ini"
echo [.ShellClassInfo] > "%%~t\Desktop.ini"
echo IconResource=%SystemRoot%\system32\SHELL32.dll,3 >> "%%~t\Desktop.ini"
echo [ViewState] >> "%%~t\Desktop.ini"
echo Mode= >> "%%~t\Desktop.ini"
echo Vid= >> "%%~t\Desktop.ini"
echo FolderType=Generic >> "%%~t\Desktop.ini"
attrib +s +h +r "%%~t\Desktop.ini"
attrib +r "%%~t"
set dateigroesse=0
)
)
pause
Mein Lösungsansatz zum Abkürzen (Abbrechen der FOR-Schleife zum Ermitteln der Ordnergröße funktioniert noch nicht):
@echo off
setlocal EnableDelayedExpansion
for /d /r "DATEIPFAD" %%t in (*) do (
set datei="%%~t"
set datei2=%%~t
set done=0
for /f "tokens=1-3" %%i in ('dir !datei! /-C /S ^|find "Datei(en)" ^|find "Bytes"') do if %%k GEQ 5000 call :BIG & ?ABBRECHEN?
call :SMALL
)
goto :eof
:BIG
echo "BIG"
attrib -r "%datei2%"
attrib -s -h -r "%datei2%\Desktop.ini"
echo [.ShellClassInfo] > "%datei2%\Desktop.ini"
echo IconResource=%SystemRoot%\system32\SHELL32.dll,266 >> "%datei2%\Desktop.ini"
echo [ViewState] >> "%datei2%\Desktop.ini"
echo Mode= >> "%datei2%\Desktop.ini"
echo Vid= >> "%datei2%\Desktop.ini"
echo FolderType=Generic >> "%datei2%\Desktop.ini"
attrib +s +h +r "%datei2%\Desktop.ini"
attrib +r "%datei2%"
set done=1
:SMALL
echo "SMALL"
if done NEQ 1 (
attrib -r "%datei2%"
attrib -s -h -r "%datei2%\Desktop.ini"
echo [.ShellClassInfo] > "%datei2%\Desktop.ini"
echo IconResource=%SystemRoot%\system32\SHELL32.dll,3 >> "%datei2%\Desktop.ini"
echo [ViewState] >> "%datei2%\Desktop.ini"
echo Mode= >> "%datei2%\Desktop.ini"
echo Vid= >> "%datei2%\Desktop.ini"
echo FolderType=Generic >> "%datei2%\Desktop.ini"
attrib +s +h +r "%datei2%\Desktop.ini"
attrib +r "%datei2%"
)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 545814
Url: https://administrator.de/forum/ordner-icon-auf-grundlage-der-ordnergroesse-aendern-laufzeit-verkuerzung-bei-bestimmung-der-ordnergroesse-545814.html
Ausgedruckt am: 19.05.2025 um 22:05 Uhr
4 Kommentare
Neuester Kommentar
Keine Ahnung, wie begabt Du da bist. Hast Du je schon mal mit C# oder VB.Net gearbeitet?
Rein mit PowerShell, ohne C# oder VB.Net, geht es auch.
Hier mal ein Bsp: (erster Treffer bei Google)
PowerShell: Calculating Folder Sizes
Rein mit PowerShell, ohne C# oder VB.Net, geht es auch.
Hier mal ein Bsp: (erster Treffer bei Google)
PowerShell: Calculating Folder Sizes

Schau in deinen letzten Thread, da steht doch schon wie's gehen kann
Kombination for-Schleifen und if-Anweisung
Kombination for-Schleifen und if-Anweisung