dani
Goto Top

Kix - Finde Fehler nicht

Hallo,

ich habe hier ein kl. Script geschrieben:

;Automatischer Zeilenumbruch
Break On;

;Tab und Absätze definieren
$crlf=chr(13)+chr(10);
$tab=chr(9);

;Liest die Zeilen aus C:\outlook.log
$pfad = Open (3,"C:\outlook.log");  
$pfadpo = ReadLine(3);
$pfadar = ReadLine(3);

;Gibt die Userinfo's aus  
$x = $x+ "Allg. Info's:" +$crlf;  
$x = $x+ "  Netzwerk Username:" +$tab       +@USERID 		 		   +$crlf;  
$x = $x+ "  User-Privillegien:" +$tab +$tab +@PRIV   		 		   +$crlf;  
$x = $x+ "  Primäre Guppe:"     +$tab +$tab +@PRIMARYGROUP 		       +$crlf;  
$x = $x+ "  Anmelde-Domaene:"   +$tab       +@LDOMAIN		 		   +$crlf;  
$x = $x+ "  Login-SERVER:"	    +$tab +$tab +@LSERVER 	   + ".WYDLER" +$crlf;    
$x = $x+ "  Workstation:"	 	+$tab +$tab +@WKSTA  		 		   +$crlf +$crlf;  


;Liest die pst File aus
$x = $x+ "Outlook:" +$crlf;  
$pstLocation = $pfadpo ;
$pstFileSize = getFileSize($pstLocation);
$pstSize 	 = $pstFileSize / (1024);


;Gibt eine Meldung aus, wenn Datei zu gross ist!
$x = $x + "   Persönlicher Ordner:" +$tab +$pstSize + " KB" +$crlf;  
if $pstSize > 50000 
 $error = $crlf +"  Ihr aktuelles Profil ist zu gross!!" +$crlf;  
 $icon  = "48";  
else
 $icon = "64";   
endif


$pstLocation = $pfadar;
$pstFileSize = getFileSize($pstLocation);
$pstSize 	 = $pstFileSize / (1024);
$x = $x + "   Archiv Ordner:" +$tab +$tab +$pstSize + " KB" +$crlf;  

$x = $x + $error;
$ok=messagebox($x,"Outlook - Information",$icon,0);  

So sieht das Ergebnis aus:
e40cb3440542ae90e13ac8f4d07ae9d1-snap1

Da müssen eigentlich keine Nullen stehen!


So mit diesem Batch les ich den Speicherordner von der PST File aus:
del "C:\outlook.log"  
For /F "delims=" %%i in ('dir /s /b U:\Outlook.pst U:\archive.pst') do echo %%i >>C:\outlook.log   

In C:\outlook.log steht auch alles korrekt drinne. Habe mein Kixscript schon x mal durchgelesen. Find aber keinen Fehler! Vielleicht findet ihn von euch einer!


Gruß
Dani

Content-Key: 28995

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

Ausgedruckt am: 28.03.2024 um 15:03 Uhr

Mitglied: gogoflash
gogoflash 28.03.2006 um 17:26:53 Uhr
Goto Top
Hi,

a)
erstmal würde ich die Semikolons aus dem Skript entfernen, diese sind zum Kommentieren da. Ändert an der Funktion des Skriptes nichts.
b)
Zum zweiten ist die Open Anweisung nicht richtig. $pfad = open geht nicht. Nur open Anweisung nutzen.
Statt $pfad= open(3,...) nur open(3,.....) ins Skript eingeben.
Dann geht es auch wieder face-smile.....

Mit $pfad=open(3,...) gibt dir Kix den Errorcode vom Open Kommando aus. Hier wäre er bei Existenz der Datei Null. Du willst aber keinen Errorcode sondern die Datei öffnen.

Ich würde eher über eine direkte Übergabe der Parameter ans KIX Skript gehen (ohne log Datei). Wie folgt:

c) Starten von KIX.
Mein Vorschlag wäre ohne Logdatei.
FOR /F %%a in ('dir c:\archiv.pst /s /b') do (For /F %%i in ('dir c:\outlook.pst /s /b') do (kix32 test.kix $pfad=%%i $pfadar=%%a))  

Damit übergeben wir direkt an das KIX-Skript die Pfade.

d) Das neue Skript sieht dann so aus :

Eigentlich wurden nur die Readline und Open Anweisungen gekillt, sonst keine wesentlichen Änderungen.

;Automatischer Zeilenumbruch
Break On

;Tab und Absätze definieren
$crlf=chr(13)+chr(10)
$tab=chr(9)

;Gibt die Userinfo's aus  
$x = $x+ "Allg. Info's:" +$crlf  
$x = $x+ "  Netzwerk Username:" +$tab       +@USERID                     +$crlf  
$x = $x+ "  User-Privillegien:" +$tab +$tab +@PRIV                       +$crlf  
$x = $x+ "  Primäre Guppe:"     +$tab +$tab +@PRIMARYGROUP                +$crlf  
$x = $x+ "  Anmelde-Domaene:"   +$tab       +@LDOMAIN                    +$crlf  
$x = $x+ "  Login-SERVER:"        +$tab +$tab +@LSERVER        + ".WYDLER" +$crlf    
$x = $x+ "  Workstation:"         +$tab +$tab +@WKSTA                      +$crlf +$crlf  

;Liest die pst File aus
$x = $x+ "Outlook:" +$crlf  
$pstLocation = $pfadpo 
$pstFileSize = getFileSize($pstLocation)
$pstSize      = $pstFileSize / (1024)

;Gibt eine Meldung aus, wenn Datei zu gross ist!
$x = $x + "   Persönlicher Ordner:" +$tab +$pstSize + " KB" +$crlf  
if $pstSize > 50000 
 $error = $crlf +"  Ihr aktuelles Profil ist zu gross!!" +$crlf  
 $icon  = "48"  
else
 $icon = "64"   
endif

$pstLocation = $pfadar
$pstFileSize = getFileSize($pstLocation)
$pstSize      = $pstFileSize / (1024)
$x = $x + "   Archiv Ordner:" +$tab +$tab +$pstSize + " KB" +$crlf  

$x = $x + $error
$ok=messagebox($x,"Outlook - Information",$icon,0)  
e) Nach Eindampfen einiger Variablen, entsteht eine leicht Verbesserte Fassung::

;Automatischer Zeilenumbruch
Break On

;Tab und Absätze definieren
$crlf=chr(13)+chr(10)
$tab=chr(9)

;Gibt die Userinfo's aus  
$x = $x+ "Allg. Info's:" +$crlf  
$x = $x+ "  Netzwerk Username:" +$tab       +@USERID                     +$crlf  
$x = $x+ "  User-Privillegien:" +$tab +$tab +@PRIV                       +$crlf  
$x = $x+ "  Primäre Guppe:"     +$tab +$tab +@PRIMARYGROUP                +$crlf  
$x = $x+ "  Anmelde-Domaene:"   +$tab       +@LDOMAIN                    +$crlf  
$x = $x+ "  Login-SERVER:"        +$tab +$tab +@LSERVER        + ".WYDLER" +$crlf    
$x = $x+ "  Workstation:"         +$tab +$tab +@WKSTA                      +$crlf +$crlf  
$x = $x+ "  Pfad-Outlook.pst:"         +$tab +$tab +     $pfad                      +$crlf +$crlf  
$x = $x+ "  Pfad-Archiv.pst:"         +$tab +$tab +     $pfadar                      +$crlf +$crlf  

;Liest die pst File aus
$x = $x+ "Outlook:" +$crlf  
$pstSize  = getFileSize($pfad) / 1024

;Gibt eine Meldung aus, wenn Datei zu gross ist!
$x = $x + "   Persönlicher Ordner:" +$tab +$pstSize + " KB" +$crlf  
if $pstSize > 50000 
 $error = $crlf +"  Ihr aktuelles Profil ist zu gross!!" +$crlf  
 $icon  = "48"  
else
 $icon = "64"   
endif

$pstSize = getFileSize($pfadar) / (1024)
$x = $x + "   Archiv Ordner:" +$tab +$tab +$pstSize + " KB" +$crlf  

$x = $x + $error
$ok=messagebox($x,"Outlook - Information",$icon,0)  



Gruß Miguel


Do be continued......
Mitglied: Dani
Dani 28.03.2006 um 21:38:34 Uhr
Goto Top
Hi,
Vielen Dank für deine Mühe. Jetzt gehts, aber frag mich nicht warum!
Wünsch dir noch was...


Gruß
Dani
Mitglied: Biber
Biber 28.03.2006 um 22:18:43 Uhr
Goto Top
Moin Dani und gogoflash,

wenn es jetzt -ohne den Zwischenschritt des Schreibens in und Lesens aus einer Datei- klappt, dann kann es eigentlich nur daran gelegen haben, dass Pfadangaben mit Umlauten ("..\Persönlicher Ordner\..") bei den *.pst-Dateiei dabei waren UND und CMD.exe und diie Kix32.exe unterschiedliche Codepages benutzen.

Das obige Skriptchen läuft auch mit "..Persönlichen Ordnern\" etc, wenn vor dem FOR-Befehl des CMD-Interpreters ein "CHCP 1252" abgesetzt wird.

Aber das überarbeitete Skript sieht schon deutlich übersichtlicher aus.

Ändern würde ich aber die ersten beiden Zeilen:

;Automatischer Zeilenumbruch
Break On

denn die haben nichts miteinander zu tun...das ist verwirrend.

Und am Ende wird auf jeden Fall die Variable $error verarbeitet, obwohl die nur im Fehlerfall initialisiert ist ($x = $x + $error).

Das ist höchst gefährlich in ziemlich allen (auch Skript-) Sprachen - würde ich mir frühzeitig abgewöhnen. Ebenso die überflüssige Variable "$ok" unten. Wenn die letzte Messagebox keinen Rückgabewert verarbeitet, dann reicht doch ein einfaches "Messagebox( bla)" statt "$ok= Messagebox( bla)"

To be cont'd...

Gruß
Biber
Mitglied: superboh
superboh 11.07.2006 um 02:49:30 Uhr
Goto Top
Kleiner Tip noch:

$crlf=chr(13)+chr(10)

Dafür kannst Du auch das Makro @crlf verwenden.

Gruß,
Thomas