45753
Goto Top

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:

[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 face-wink

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

Content-Key: 55020

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

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

Member: filippg
filippg Mar 26, 2007 at 00:10:16 (UTC)
Goto Top
Hallo,

als Lösungsansatz: du kannst ja ermitteln, wie viele Stellen die Zahl hat und dann in Abhängigkeit davon in einer Schleife Leerzeichen einfügen. Am besten schreibst du dafür eine "Funktion" (Bereich zwischen zwei Sprungmarken", die dann dafür verwenden kannst.

Filipp
Member: Biber
Biber Mar 26, 2007 at 05:44:57 (UTC)
Goto Top
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:
...
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