JPUser.dat Dateigroessen ermitteln aus Benutzerverzeichnissen
Aus znilwiki
Ich wollte gerade mal wissen wie Groß die Profile der Benutzer sind - die größten und dicksten schaue ich mir dann an :-)
Um das als Liste schön untereinander zu haben, habe ich mir eine Batch geschrieben die folgende Ausgabe macht:
Die Ausgabe könnt Ihr natürlich auch in eine Textdatei umleiten
JPUserDatCheck.cmd > Liste.txt
Im Quellcode müsst Ihr den Pfad setzen unter
set PROFILPFAD=D:\Profiles
muss euer Pfad rein.
Warnung: ACHTUNG: Je nach Betriebssystem müsst Ihr die Byte-Ermittlung an die Sprache anpassen, das Beispiel hier ist für englische Systeme, die Zeile für deutsche ist drin, müsst ihr nur umkommentieren (englisch REM davor und bei Deutsch entfernen). Gibt es eine Fehlermeldung wie ""set" kann syntaktisch an dieser Stelle nicht verarbeitet werden." müsst Ihr die Sprache umschalten!
Hier der Quelltext:
@echo off
REM ##################################################################################################
REM Einfache Batchdatei die eine Ordnerstruktur abarbeitet.
REM In diesem Fall wollen wir einer Liste der größe aller JPUser.dat Dateien der Benutzer
REM 2014 Bernhard Linz
REM Bernhard@znil.net
REM Bernhard.Linz@datagroup.de
REM veröffentlicht auf znilwiki: http://znil.net
REM
REM Setup
set PROFILPFAD=D:\Profiles
REM ****************************************************************
set SUMME=0
REM Wir lassen uns alle Ordner im Verzeichnis auflisten und nehmen diese als Arbeitsgrundlage.
dir /b %PROFILPFAD% > "%TEMP%\benutzerliste.txt"
for /F "eol=# tokens=1-4 delims=\" %%i in (%TEMP%\benutzerliste.txt) do call :SCHLEIFE %%i %%j
goto ENDE
REM SCHLEIFE #########################################################################################
:SCHLEIFE
REM Ordnernamen ermitteln!
set ORDNERNAME=%1
set ORDNERNAME2=%1 %2
REM prüfen ob wir einen Wert haben, sonst beenden
if /I "%ORDNERNAME%"=="" goto :EOF
REM in den nächsten Zeilen würden wir uns nur den Benutzrnamen abschneiden. Auskommentiert da ich es nicht verwende
REM for /f "tokens=1,2,3 delims=." %%a in ("%ORDNERNAME%") do set ORDNERNAME1=%%a
REM echo %DATE%/%TIME% - Verarbeitetes Profil %ORDNERNAME% / %ORDNERNAME1%
REM prüfen ob es die Datei überhaupt gibt um Fehlermeldungen zu unterdrücken in der Liste (Datei nicht gefunden kommt sonst ggf.)
if NOT exist "%PROFILPFAD%\%ORDNERNAME%\JumpingProfile\JPUser.dat" goto :EOF
REM Größe abfragen!
REM Deutsche Spracheinstellungen / Ausgabe von DIR ist auf Deutsch
REM for /f "tokens=1-3" %%i in ('dir "%PROFILPFAD%\%ORDNERNAME%\JumpingProfile\JPUser.dat" /-C /S ^|find "Datei(en)" ^|find "Bytes"') do set DATEIGROESSE=%%k
REM oder Englisches System / Ausgabe von DIT ist in Englisch
for /f "tokens=1-3" %%i in ('dir "%PROFILPFAD%\%ORDNERNAME%\JumpingProfile\JPUser.dat" /-C /S ^|find "File(s)" ^|find "bytes"') do set DATEIGROESSE=%%k
REM Umrechnen von Bytes in Megabytes
set /A DATEIGROESSE=(%DATEIGROESSE% / 1048576)
REM Führende Leerzeichen damit alles schön untereinander steht
if %DATEIGROESSE%==0 set DATEIGROESSE=1
if %DATEIGROESSE% LEQ 9 set DATEIGROESSE= %DATEIGROESSE%
if %DATEIGROESSE% LEQ 99 set DATEIGROESSE= %DATEIGROESSE%
REM Kunstgriff um die MByte Werte untereinander zu haben
set GANZERPFAD=%PROFILPFAD%\%ORDNERNAME%\JumpingProfile\JPUser.dat .
REM und die eigentliche Ausgabe. Der zuvor gebaute Wert wird nach 80 Zeichen abgeschnitten
echo %GANZERPFAD:~ 0, 80% %DATEIGROESSE% MBytes
REM das war schon alles
goto :EOF
REM Schluss ist ######################################################################################
:ENDE
REM Aufräumen
del "%TEMP%\benutzerliste.txt"
pause
--Bernhard Linz 12:24, 8. Okt. 2014 (CEST)
Loading comments...