Kix - Finde Fehler nicht
Hallo,
ich habe hier ein kl. Script geschrieben:
So sieht das Ergebnis aus:

Da müssen eigentlich keine Nullen stehen!
So mit diesem Batch les ich den Speicherordner von der PST File aus:
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
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:

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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 28995
Url: https://administrator.de/forum/kix-finde-fehler-nicht-28995.html
Ausgedruckt am: 06.04.2025 um 04:04 Uhr
4 Kommentare
Neuester Kommentar
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
.....
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.
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.
e) Nach Eindampfen einiger Variablen, entsteht eine leicht Verbesserte Fassung::
Gruß Miguel
Do be continued......
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
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)
;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......
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
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