Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Glombi am 21.07.04 - 09:28:27
-
100 mal gemacht, jetzt geht's nicht ???
Ich habe eine Batchdatei test.bat, die ich per Script aufrufen möchte. Die Datei liegt unter e:\test.bat
Inhalt: dir *.* > ausgabe.txt
Notes ist unter d:\notes6 installiert.
In einem Script-Agenten habe ich folgendes
ret = Shell ("e:\test.bat",1 )
Die Rückgabe von ret ist 33 (also kein Fehler).
Ich sehe kurz die DOS Box, aber das erwartete Ergebnis - die Datei ausgabe.txt - ist nicht da. Wenn ich die bat Datei manuell starte, geht es.
Was habe ich übersehen ???
Nachtrag: Folgendes geht auch nicht:
ret = Shell ("cmd /c E:\test.bat",1 )
ret = Shell ("cmd /c E:\\test.bat",1 )
Andreas
-
Es geht - ich habe mal wieder vergessen
Chdrive "e:"
zu setzen. Script sucht auf dem Laufwerk, auf dem Notes installiert ist.
Andreas
-
Ich rufe auch in ein paar Notesdatenbanken eine Batchdatei auf - allerdings über @Command( [Execute] ...
Was ist wenn Du cmd /k eingibst? Bleibt dann im Taskmanager der Prozess CMD stehen? Ich gehe jetzt mal nicht davon aus das Du unter NT4 arbeitest - da gibt es noch ein paar andere Fallstricke...
Gruss
Martin
-
Also, Ergebniswert == kein Fehler ist durchaus zu erwarten, Du bekommst den Rückgabewert von CMD.EXE und der gibt nun mal eigentlich keinen echten Status zurück. Der Status von test.bat steht in der Umgebungsvariablen errorlevel (oder so, habs grad nciht mehr genau in Errinnerung) und diese Umgebungsvariable ist transient, sprich ist schoh wieder weg, wenn der CMD geschlossen wird.
Suche mal mit der Suchfunktion nach der Ausgabedatei. Ich vermute mal, dass Du nicht im richtigen Verzeichnis bist. Das was Du hier gepostet hast, spielt sich im aktuellen Dir ab, und das ist, wenn Du aus der Applikation startest, stark vom Zufall abhängig (Wie wurde die App gestartet, wurde von irrgend einem Prozess das aktuelle Verzeichnis gewechselt usw. usw., sprich, das ist echt unzuverlässig).
Anders ausgedrückt, damit Du das erwartete Ergebnis bekommst, braucht Deine test.bat mindestens 2 Zeilen mehr:
D:
cd \dasGewuenschteVerzeichnis
Alternativ lässt sich natürlich der Parameter zum Dir fest verdrahen.
Lohnen dürfe sich auch, den Redirekt auf einen festen Pfad zu verdrahten:
dir D:\MeinDatenverzeichnis > C:\Tenp\Dirausgabe.txt
-
Danke für die Antworten. An der Batchdatei, die wiederum ein Java-Programm aufruft und 3 Dateipfade übergibt, kann ich nichts schrauben, da das von einem anderen DL erstellt und bereits auf die PCs verteilt wurde.
Ich soll das ganze aus einer Notes-DB aufrufen.
Mit dem ChDrive scheint es ja zu gehen. Ohne dieses funktioniert es nur, wenn sich das ganze auf dem gleichen Laufwerk wie die Notes-Installation befindet.
Das ganze läuft unter XP.
Andreas
-
Also, mit ChDrive und ChDir kannst Du den Effekt natürlich auch erreichen, das sollte unproblematisch sein.
-
Falls es mit dieser Lösung Probleme gibt, existieren weitere Mehr-Infrastruktur-heisst-oft-letztendlich-nicht-komplizierter Ansätze.
1. rmi (beschrieben in www.javabuch.de).
2. webservice
Ich mag eigentlich solche old-school-Formen der Integration von unterschiedlichen Prozessen wie "externes Programm aufrufen und dann Dateien auslesen" absolut nicht. Da hab ich aber auch unter Kollegen sehr andere Meinungen.
-
Axel, Du hast recht. Es ist auch eher eine temporäre Krücke (die dann ja bekanntlich die am längsten verwendeten Programme sind ;D)
Andreas
-
Andreas, Du meinst, als nächster Schritt müsste die Batch-Datei in Cobol übersetzt werden ....... ;D
-
genau dagegen lehnt sich bei mir irgendwas auf.
Entwickelt sich zu so einer Art Besessenheit.
Falls ich irgendwann ein openSource Zeugs schreiben würde wäre es:
1984
Don't trust those IT people, no matter which flavour they belong too.
Manage, monitor, trace every tiny method/function call in your shiety little enterprise or one day the whole stuff will kill you.
(bei open Source muss man ja nicht so auf Marketing achtgegen. 8)
Ansonsten bin ich gegenüber Kunden sensibel, rücksichtsvoll und voll nett).
Auf der anderen Seite muss man schon sehr smart sein, wenn man da nicht statt eines point of failure eine Kette von points of failure erzeugt.
-
Ich muss den Thread doch nocheinmal aufmachen.
Das ganze funktioniert solange man Laufwerksbuchstaben hat. Mit UNC Pfaden geht das allerdings nicht, da ChDrive einen Fehler erzeugt.
Hat jemand eine Idee?
Andreas
-
nich hauen :-[
aber ich hab vor 2 Jahren mal ein ähnliches Problem mit Kapitel 46 Remote Method Invocation des Handbuchs der Javaprogrammierung gelöst (bzw. der Vorgängerversion).
Das war eine Domino5 Umgebung und die Java App, die eingebunden war Java1.3.
Trotz der Versionsunterschiede in Java lief das reibungslos und war auch nicht so schwierig (hatte damals aber schon einiges an Erfahrung mit Java).
Rose Kelleher beschreibt die Dominoseite in ihrem Buch von 1998 (allerdings für Web).
Ein Java Notes Agent kommuniziert über RMI mit der als RMI-Service eingebundenen Java-Klasse.
Heute würde ich das Problem wahrscheinlich mit Webservices angehen. Vielleicht kommst du ja mit Java-RMI klar. Das ist alles gar nicht so schwierig.
Gruß Axel
-
Hallo Andreas,
was mir nicht ganz klar ist wann Du den Laufwerksbuchstaben brauchst? Kannst Du das Laufwerk nicht in der Batch-Datei einbauen:
net use z: \\server1\freigabe
Ist zwar nicht so elegant, ich denke es könnte den Kunden aber "befriedigen" weil Batch-Programmierung i.d.R. eher die Welt der Admins ist als Notes....
Gruss
Martin
-
Ich möchte das möglichst ohne Anpassen der Batchdatei hinbekommen. Es ist mir auch gelungen.
Die Batchdatei muss in einem Verzeichnis mit Laufwerksangabe liegen, da das
Shell ("cmd /c..."
bzw. cmd kein UNC unterstützt.
Jetzt muss mir nur noch einer sagen, wie ich eine .txt in einem UNC Pfad öffnen.
ret = Shell ("Explorer " & PathLogFile,6 )
öffnet mir die Datei im Internetexplorer. Wie kann ich den Editor aufrufen? Irgendwie bin ich zur Zeit betriebsblind...
Andreas
-
Wie wäre es mit
cmd /c notepad.exe ........ ?
Oder sonst kannst Du wohl auch noch ein paar Sachen über das FSO (FileSystemObject) erreichen. Such mal bei Microsoft nach dem Ding.
-
was ist mit Ralfs Idee, das Java Programm via Programmdokument aufzurufen ???
http://www.atnotes.de/index.php?board=24;action=display;threadid=17049;start=0;boardseen=1 (http://www.atnotes.de/index.php?board=24;action=display;threadid=17049;start=0;boardseen=1)
Die letzten Einträge (27.7.04, morgens)
Gruß Axel