
45753
26.03.2007, aktualisiert um 07:44:57 Uhr
Statistik Menu - fixen
Vorab: ich habe probleme gehabt den Beitrag zu posten... vielleicht ist er zu lang. Deshalb splitte ich diesen nun in zwei posts
...die Teilung zwischen dem Beitrag hat geholfen...
---
Folgendes Problem habe ich bei der Ausgabe dieser Batch-Datei:
Ich habe tabulatoren zwischen den Zeilen benutzt,doch das kann man vergessen. Leerzeichen funktionieren auch nicht, da die zeile bei der zahl z.B. 461 um zwei zeichen nach rechts rückt. Man braucht also eine immer konstant anzahl an Zeichen zwischen den drei Menüs. Da ich die Anzahl der Leerzeichen zwischen den 6 jeweiligen Auflistungspunkten ja weis, müste es für mich doch die Möglichkeit geben bei z.B. einer Zahl von 43721 mittels eines vergleichs fünf leerzeichen zu löschen um die fünfstellige Zahl dann an diese Stelle zu setzen. Ich habe allerdings keine solch art lösung hier im Forum entdecken können. Ich hätte ein paar ideen, doch zu posten wage ich sie erst wenn z.B. "bastla" auch nichts mehr einfallen sollte
Hier nun das komplette Script:
Ich wäre für jede idee dankbar!
Grüsse
wobleibtdiezeit
...die Teilung zwischen dem Beitrag hat geholfen
---
Folgendes Problem habe ich bei der Ausgabe dieser Batch-Datei:
[Statistik-Screen-Anfang]
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
Suche nach Dateien und Ordner und Objekten aus allen Unter-.+.Ordnern von...
"D:\Storage.SWInfos"
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
====== Dateien ====== ======= Ordner ======= ====== Objekte ======
Sichtbar: 43260 Sichtbar: 6289 Sichtbar: 49549
Schreib.: 110 Schreib.: 460 Schreib.: 570
Versteckt: 461 Versteckt: 0 Versteckt: 461
System: 461 System: 0 System: 461
Archiv: 43720 Archiv: 0 Archiv: 43720
Gesamt: 43721 Gesamt: 6289 Gesamt: 50010
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
[Statistik-Screen-Ende]
Bei jeder Statistik sieht die Anordnung wieder anders aus. Bei wenigen
Datei/Ordner/Objekt Funden liegen die Menüs von Ordner/Objekte
weiter links und bei vielen funden eben weiter rechts.
Eigendlich sollte das Menü bei der Ausgabe so aussehenIch:
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
Suche nach Dateien und Ordner und Objekten aus allen Unter-.+.Ordnern von...
"D:\Storage.SWInfos"
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
====== Dateien ====== ======= Ordner ======= ====== Objekte ======
Sichtbar: 43260 Sichtbar: 6289 Sichtbar: 49549
Schreib.: 110 Schreib.: 460 Schreib.: 570
Versteckt: 461 Versteckt: 0 Versteckt: 461
System: 461 System: 0 System: 461
Archiv: 43720 Archiv: 0 Archiv: 43720
Gesamt: 43721 Gesamt: 6289 Gesamt: 50010
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
Ich habe tabulatoren zwischen den Zeilen benutzt,doch das kann man vergessen. Leerzeichen funktionieren auch nicht, da die zeile bei der zahl z.B. 461 um zwei zeichen nach rechts rückt. Man braucht also eine immer konstant anzahl an Zeichen zwischen den drei Menüs. Da ich die Anzahl der Leerzeichen zwischen den 6 jeweiligen Auflistungspunkten ja weis, müste es für mich doch die Möglichkeit geben bei z.B. einer Zahl von 43721 mittels eines vergleichs fünf leerzeichen zu löschen um die fünfstellige Zahl dann an diese Stelle zu setzen. Ich habe allerdings keine solch art lösung hier im Forum entdecken können. Ich hätte ein paar ideen, doch zu posten wage ich sie erst wenn z.B. "bastla" auch nichts mehr einfallen sollte
Hier nun das komplette Script:
[code]
@echo off & setlocal
cls
:start
if [%1] neq cd /d %1 2>nul || cd /d "%~dp1"
echo.
echo -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
ECHO.
echo Suche nach Dateien und Ordner und Objekten aus allen Unter-.+.Ordnern von...
echo.
echo "%cd%"
echo.
echo ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
echo.
echo ====== Dateien ====== ======= Ordner ======= ====== Objekte ======
echo.
for /f %%i in ('DIR /A-H-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1aa=%%i
if not defined anzahl1aa set anzahl1aa=0
for /f %%i in ('DIR /AD-H /S /B 2^>nul^|find /c /i "\"') do @set anzahl2aa=%%i
if not defined anzahl2aa set anzahl2aa=0
for /f %%i in ('DIR /A-H /S /B 2^>nul^|find /c /i "\"') do @set anzahl3aa=%%i
if not defined anzahl3aa set anzahl3aa=0
echo Sichtbar: %anzahl1aa% Sichtbar: %anzahl2aa% Sichtbar: %anzahl3aa%
for /f %%i in ('DIR /AR-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1ab=%%i
if not defined anzahl1ab set anzahl1ab=0
for /f %%i in ('DIR /ADR /S /B 2^>nul^|find /c /i "\"') do @set anzahl2ab=%%i
if not defined anzahl2ab set anzahl2ab=0
for /f %%i in ('DIR /AR /S /B 2^>nul^|find /c /i "\"') do @set anzahl3ab=%%i
if not defined anzahl3ab set anzahl3ab=0
echo Schreib.: %anzahl1ab% Schreib.: %anzahl2ab% Schreib.: %anzahl3ab%
for /f %%i in ('DIR /AH-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1ac=%%i
if not defined anzahl1ac set anzahl1ac=0
for /f %%i in ('DIR /ADH /S /B 2^>nul^|find /c /i "\"') do @set anzahl2ac=%%i
if not defined anzahl2ac set anzahl2ac=0
for /f %%i in ('DIR /AH /S /B 2^>nul^|find /c /i "\"') do @set anzahl3ac=%%i
if not defined anzahl3ac set anzahl3ac=0
echo Versteckt: %anzahl1ac% Versteckt: %anzahl2ac% Versteckt: %anzahl3ac%
for /f %%i in ('DIR /AS-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1ad=%%i
if not defined anzahl1ad set anzahl1ad=0
for /f %%i in ('DIR /ADS /S /B 2^>nul^|find /c /i "\"') do @set anzahl2ad=%%i
if not defined anzahl2ad set anzahl2ad=0
for /f %%i in ('DIR /AS /S /B 2^>nul^|find /c /i "\"') do @set anzahl3ad=%%i
if not defined anzahl3ad set anzahl3ad=0
echo System: %anzahl1ad% System: %anzahl2ad% System: %anzahl3ad%
for /f %%i in ('DIR /AA-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1ae=%%i
if not defined anzahl1ae set anzahl1ae=0
for /f %%i in ('DIR /ADA /S /B 2^>nul^|find /c /i "\"') do @set anzahl2ae=%%i
if not defined anzahl2ae set anzahl2ae=0
for /f %%i in ('DIR /AA /S /B 2^>nul^|find /c /i "\"') do @set anzahl3ae=%%i
if not defined anzahl3ae set anzahl3ae=0
echo Archiv: %anzahl1ae% Archiv: %anzahl2ae% Archiv: %anzahl3ae%
for /f %%i in ('DIR /A-D /S /B 2^>nul^|find /c /i "\"') do @set anzahl1af=%%i
if not defined anzahl1af set anzahl1af=0
for /f %%i in ('DIR /AD /S /B 2^>nul^|find /c /i "\"') do @set anzahl2af=%%i
if not defined anzahl2af set anzahl2af=0
for /f %%i in ('DIR /A /S /B 2^>nul^|find /c /i "\"') do @set anzahl3af=%%i
if not defined anzahl3af set anzahl3af=0
echo Gesamt: %anzahl1af% Gesamt: %anzahl2af% Gesamt: %anzahl3af%
echo.
echo -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
echo.
set choice=
set /p choice= Ausgeben in Textdatei ? (y/n):
if not "%choice%" == "" set choice=%choice:~0,1%
if /i "%choice%" == "y" goto txtja
if /i "%choice%" == "n" goto txtnein
call :Statistik
set choicef=%choice%
set choice=
set /p choice= "%choicef%" ist keine gueltige Eingabe. Druecke y (Ja) oder n (Nein) und dann ENTER:
if not "%choice%" == "" set choice=%choice:~0,1%
if /i "%choice%" == "y" goto txtja
if /i "%choice%" == "n" goto txtnein
cls
goto start
:txtja
set t01="!!! Statistik - Dateien & Ordner & Objekte - ALLER Unter-.+.Ordner !!!.txt"
echo. >> %t01%
echo -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- >> %t01%
ECHO. >> %t01%
echo Suche nach Dateien und Ordner und Objekten aus allen Unter-.+.Ordnern von... >> %t01%
echo. >> %t01%
echo "%cd%" >> %t01%
echo. >> %t01%
echo ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ >> %t01%
echo. >> %t01%
echo ====== Dateien ====== ======= Ordner ======= ====== Objekte ====== >> %t01%
echo. >> %t01%
echo Sichtbar: %anzahl1aa% Sichtbar: %anzahl2aa% Sichtbar: %anzahl3aa% >> %t01%
echo Schreib.: %anzahl1ab% Schreib.: %anzahl2ab% Schreib.: %anzahl3ab% >> %t01%
echo Versteckt: %anzahl1ac% Versteckt: %anzahl2ac% Versteckt: %anzahl3ac% >> %t01%
echo System: %anzahl1ad% System: %anzahl2ad% System: %anzahl3ad% >> %t01%
echo Archiv: %anzahl1ae% Archiv: %anzahl2ae% Archiv: %anzahl3ae% >> %t01%
echo Gesamt: %anzahl1af% Gesamt: %anzahl2af% Gesamt: %anzahl3af% >> %t01%
echo. >> %t01%
echo -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- >> %t01%
echo. >> %t01%
:txtnein
call :Statistik
echo === Exit ===
if EXIST C:\WINDOWS\system32\wait_20.exe goto wait_20
pause
goto :eof
:wait_20
wait_20 1 KEY
goto :eof
:Statistik
cls
echo.
echo -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
ECHO.
echo Suche nach Dateien und Ordner und Objekten aus allen Unter-.+.Ordnern von...
echo.
echo "%cd%"
echo.
echo ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
echo.
echo ====== Dateien ====== ======= Ordner ======= ====== Objekte ======
echo.
echo Sichtbar: %anzahl1aa% Sichtbar: %anzahl2aa% Sichtbar: %anzahl3aa%
echo Schreib.: %anzahl1ab% Schreib.: %anzahl2ab% Schreib.: %anzahl3ab%
echo Versteckt: %anzahl1ac% Versteckt: %anzahl2ac% Versteckt: %anzahl3ac%
echo System: %anzahl1ad% System: %anzahl2ad% System: %anzahl3ad%
echo Archiv: %anzahl1ae% Archiv: %anzahl2ae% Archiv: %anzahl3ae%
echo Gesamt: %anzahl1af% Gesamt: %anzahl2af% Gesamt: %anzahl3af%
echo.
echo -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
echo.
[code]
Ich wäre für jede idee dankbar!
Grüsse
wobleibtdiezeit
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 55020
Url: https://administrator.de/forum/statistik-menu-fixen-55020.html
Ausgedruckt am: 21.04.2025 um 15:04 Uhr
2 Kommentare
Neuester Kommentar
Moin wobleibtdiezeit,
kann mich filipp's Strategie (grundsätzlich) nur anschliessen.
In diesem Fall, also beim Thema "Funktionen" und eigentlich sogar bei der Notwendigkeit einer Parameterübergabe per reference gibt allerdings der Batch-Syntaxumfang wenig her, was elegant oder wartbar wäre.
Deshalb wirst Du wahrscheinlich um ein paar zusätzliche Zeilen nach folgendem Muster nicht herumkommen:
Gruss
Biber
kann mich filipp's Strategie (grundsätzlich) nur anschliessen.
In diesem Fall, also beim Thema "Funktionen" und eigentlich sogar bei der Notwendigkeit einer Parameterübergabe per reference gibt allerdings der Batch-Syntaxumfang wenig her, was elegant oder wartbar wäre.
Deshalb wirst Du wahrscheinlich um ein paar zusätzliche Zeilen nach folgendem Muster nicht herumkommen:
...
REM Jetzt: <i>if not defined anzahl3ae set anzahl3ae=0</i>
REM Neu: (angenommen 10 Zeichen seien die gewünschte anzuzeigende Stellenanzahl
REM Step 1: Variable auf laaaaaaange Stellenanzahl, also größergleich MAX bringen
if not defined anzahl3ae (set "anzahl3ae= 0") else (set "anzahl3ae= %anzahl3ae%")
REM Step2: auf die letzten (also minus) 10 Stellen der Variablen verkürzen.
set anzahl3ae=%anzahl3ae:~-10%
:: --------oder das zweite SET einsparen und unten in den ECHO-Zeilen direkt schreiben "echo %anzahl3ae:~-10%" etc.
Gruss
Biber