Größe eines bestimmten Ordners bestimmen, der in div. Unterordnern vorkommt
Hallo zusammen.
zuerst mal wünsch ich Euch allen ein gutes und erfolgreiches neues Jahr!
Ich habe auf einem Netzwerklaufwerk folgende Struktur:
Jeder Kunde(ca. 500) hat sein eigenes Verzeichnis, die Verzeichnisstruktur unterhalb des Kundennamen ist für alle Kunden identisch. Das bedeutet, es gibt in jedem Kundenordner die selben 20 Unterordner.
Nun möchte ich gerne in einem ersten Schritt für jeden Kunden die Größe eines bestimmten (immer gleich heißenden) Unterordners ermitteln.
In einem zweiten Schritt möchte ich die Dateien nach Erstellungsjahr in 7z-Archive packen (also ein Archiv für 2001, eines für 2002, etc...)
wie kann ich das am besten anstellen?
Vielen Dank schon mal
zuerst mal wünsch ich Euch allen ein gutes und erfolgreiches neues Jahr!
Ich habe auf einem Netzwerklaufwerk folgende Struktur:
Jeder Kunde(ca. 500) hat sein eigenes Verzeichnis, die Verzeichnisstruktur unterhalb des Kundennamen ist für alle Kunden identisch. Das bedeutet, es gibt in jedem Kundenordner die selben 20 Unterordner.
Nun möchte ich gerne in einem ersten Schritt für jeden Kunden die Größe eines bestimmten (immer gleich heißenden) Unterordners ermitteln.
In einem zweiten Schritt möchte ich die Dateien nach Erstellungsjahr in 7z-Archive packen (also ein Archiv für 2001, eines für 2002, etc...)
wie kann ich das am besten anstellen?
Vielen Dank schon mal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 178348
Url: https://administrator.de/contentid/178348
Ausgedruckt am: 25.11.2024 um 16:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo
Hast du Google bereits mal gefragt?
Ich würde für ein solches Script VBS verwenden.
Dazu gibt es für die Ordnergrösse folgendes Script:
http://www.mcseboard.de/windows-forum-scripting-71/ordnergroesse-vbs-er ...
Ein 7-zip kannst du über das Consolenprogramm erstellen:
http://www.dotnetperls.com/7-zip-examples
Damit du das Alter der Files prüfen kannst musst du mit einer FOR Schleife jede Datei im Ordner durchgehen. Hilfe dazu findest du hier:
http://www.vb-magazin.de/forums/forums/p/4054/15505.aspx
Und ich denke mit ein bisschen googlen findest du auch noch raus wie man das Alter einer Datei bestimmen kann.
Das alles einbisschen durchrühren und zusammenmischen und du hast dein Script. ;)
Hast du Google bereits mal gefragt?
Ich würde für ein solches Script VBS verwenden.
Dazu gibt es für die Ordnergrösse folgendes Script:
http://www.mcseboard.de/windows-forum-scripting-71/ordnergroesse-vbs-er ...
Ein 7-zip kannst du über das Consolenprogramm erstellen:
http://www.dotnetperls.com/7-zip-examples
Damit du das Alter der Files prüfen kannst musst du mit einer FOR Schleife jede Datei im Ordner durchgehen. Hilfe dazu findest du hier:
http://www.vb-magazin.de/forums/forums/p/4054/15505.aspx
Und ich denke mit ein bisschen googlen findest du auch noch raus wie man das Alter einer Datei bestimmen kann.
Das alles einbisschen durchrühren und zusammenmischen und du hast dein Script. ;)
Hallo kugman!
Da Du in Deiner Beschreibung sehr allgemein bleibst, muss ich das auch in meinem (ungetesteten) Batch-Ansatz:
Nach dem selben Schema kannst Du im Unterprogramm ":ProcessDir" mit
das Aufteilen und Packen versuchen.
Die Zeile 5 zeigt übrigens (wegen des "
Zum Ablauf: Es werden zunächst im Ordner "%Sammel%" Unterordner für die einzelnen Jahre gebildet, in diese Ordner die Dateien kopiert, danach diese Jahresordner komprimiert und wieder gelöscht.
Der obige Ansatz geht vom Änderungsdatum aus - soll tatsächlich das Erstellungsdatum verwendet werden, wäre die erste Zeile durch
zu ersetzen ...
Grüße
bastla
Da Du in Deiner Beschreibung sehr allgemein bleibst, muss ich das auch in meinem (ungetesteten) Batch-Ansatz:
@echo off & setlocal
set "Basis=D:\Alle Kunden"
set "Ordner=Name des Unterordners"
set "Ziel=Ordner fuer gapackte Daten"
set "Sammel=%temp%\Jahre"
for /d %%i in ("%Basis%\*") do call :ProcessDir "%%i"
goto :eof
:ProcessDir
for /f "tokens=3" %%a in ('dir /s "%~1\%Ordner%"^|findstr "Datei(en)"') do set "Bytes=%%a"
echo %%a Bytes fuer %~nx1
goto :eof
for /f "delims=" %%a in ('dir /s/b/a-d "%~1\%Ordner%"') do for /f "tokens=3 delims=. " %%d in ("%%~ta") do (
md "%Sammel%\%%~nxd" 2>nul
copy "%%a" "%Sammel%\%%~nxd"
)
for /d %%d in ("%Sammel%\*") do echo 7z a "%Ziel%\%~nx1\%%~nxd" "%%d\*.*"
rd /s /q "%Sammel%" 2>nul
goto :eof
Die Zeile 5 zeigt übrigens (wegen des "
echo
") die Packbefehle nur einmal an ...Zum Ablauf: Es werden zunächst im Ordner "%Sammel%" Unterordner für die einzelnen Jahre gebildet, in diese Ordner die Dateien kopiert, danach diese Jahresordner komprimiert und wieder gelöscht.
Der obige Ansatz geht vom Änderungsdatum aus - soll tatsächlich das Erstellungsdatum verwendet werden, wäre die erste Zeile durch
for /f "delims=" %%a in ('dir /s/b/a-d "%~1\%Ordner%"') do for /f "tokens=3 delims=. " %%d in ('dir /tc "%%a"^|findstr /i /e "%%~nxa"') do (
Grüße
bastla