Aufgabenplaner führt Programm inkorrekt aus
Hallo Leute
Ich habe ein sehr seltsames Phänomen.
Folgende Gegebenheiten :
Wir haben einen Windows Server 2012 R2 Standard.
Es gibt 2 Programme die ich selbst geschrieben habe.
Beide funktionieren und erfüllen ihren Zweck.
Eines ist etwas Komplexer und bereitet für die Homepage einige Bilder, Beschreibung sowie Teilelisten vor.
Das andere Programm dient nur zum Upload auf einen FTP Server und sendet bei Erfolg eine Email an den
zuständigen Mitarbeiter.
Beide zusammengefasst in einer CMD Datei und im Aufgabenplaner eingestellt.
Nun das Problem
Der Aufgabenplaner startet die CMD korrekt. Diese führt auch das erste Programm korrekt aus
Nach Ende des ersten Programms wird auch das zweite angestartet. Jedoch bekomme ich die Meldung,
daß der FTP Server nicht erreichbar sei. Dementsprechend geht es nicht weiter.
Starte ich diese CMD einzeln oder führe ich diese aus dem Aufgabenplaner aus, funktioniert diese Tadellos.
Einstellungen des Taskplaner :
Ausführen mit höchsten Berechtigungen ist aktiv
Nur ausführen wenn Benutzer angemeldet ist auch aktiv (Der Benutzer Admin ist immer angemeldet)
Wie gesagt, der Task startet an, beide Programme werden der Reihe nach gestartet, nur die Meldung mit dem
nicht erreichbaren FTP ist mir ein Rätsel.
Ich habe schon die CMD auf verschiedene Weisen geändert und auch die Startzeit geändert.
Auch das Uploadprogramm einzeln in der Aufgabenplanung bringt nicht den Erfolg.
Hat jemand von euch eine Idee ?
LG
Bisk
Ich habe ein sehr seltsames Phänomen.
Folgende Gegebenheiten :
Wir haben einen Windows Server 2012 R2 Standard.
Es gibt 2 Programme die ich selbst geschrieben habe.
Beide funktionieren und erfüllen ihren Zweck.
Eines ist etwas Komplexer und bereitet für die Homepage einige Bilder, Beschreibung sowie Teilelisten vor.
Das andere Programm dient nur zum Upload auf einen FTP Server und sendet bei Erfolg eine Email an den
zuständigen Mitarbeiter.
Beide zusammengefasst in einer CMD Datei und im Aufgabenplaner eingestellt.
Nun das Problem
Der Aufgabenplaner startet die CMD korrekt. Diese führt auch das erste Programm korrekt aus
Nach Ende des ersten Programms wird auch das zweite angestartet. Jedoch bekomme ich die Meldung,
daß der FTP Server nicht erreichbar sei. Dementsprechend geht es nicht weiter.
Starte ich diese CMD einzeln oder führe ich diese aus dem Aufgabenplaner aus, funktioniert diese Tadellos.
Einstellungen des Taskplaner :
Ausführen mit höchsten Berechtigungen ist aktiv
Nur ausführen wenn Benutzer angemeldet ist auch aktiv (Der Benutzer Admin ist immer angemeldet)
Wie gesagt, der Task startet an, beide Programme werden der Reihe nach gestartet, nur die Meldung mit dem
nicht erreichbaren FTP ist mir ein Rätsel.
Ich habe schon die CMD auf verschiedene Weisen geändert und auch die Startzeit geändert.
Auch das Uploadprogramm einzeln in der Aufgabenplanung bringt nicht den Erfolg.
Hat jemand von euch eine Idee ?
LG
Bisk
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 551775
Url: https://administrator.de/contentid/551775
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
23 Kommentare
Neuester Kommentar
Die Aufgabe soll unter einem Admin-Konto ausgeführt werden, das eingegebene Kennwort ist korrekt und wird auch akzeptiert MyLowesLife.
Hi,
wenn Du diese Programme selbst geschrieben hast, dann kannst Du doch auch weiterführende Diagnosen einbauen.
Wenn im Programm der Fehler mit dem FTP-Server kommt, dann lass eine Prüfung der Umgebungsbedingungen ausführen. Ob die Umgebung so ist, wie Du es erwartest.
Ich programmiere selbst und weiß, wovon ich spreche. Ich habe mich schon zu oft auf diese Weise selbst "ausgetrickst" ... ;.)
E.
wenn Du diese Programme selbst geschrieben hast, dann kannst Du doch auch weiterführende Diagnosen einbauen.
Wenn im Programm der Fehler mit dem FTP-Server kommt, dann lass eine Prüfung der Umgebungsbedingungen ausführen. Ob die Umgebung so ist, wie Du es erwartest.
Dateien aus dem Verzeichnis werden in eine Listbox geladen und diese dann innerhalb einer Schleife einzeln hochgeladen.
Könnte es sein, dass der Fehler hier liegt? Und dass die Fehlermeldung aus dem Programm heraus einfach nur falsch ist? Dass Du da etwas nicht berücksichtigt hast?Ich programmiere selbst und weiß, wovon ich spreche. Ich habe mich schon zu oft auf diese Weise selbst "ausgetrickst" ... ;.)
E.
Und wieder ausgetrickst.
Der Einzelschrittmodus läuft doch nicht, wenn als Scheduled Task ausgeführt, sondern nur, wenn du interaktiv debugst.
Du denkst nur, alles sei gleich. Erfasse es empirisch, ohne Denken!
Der Einzelschrittmodus läuft doch nicht, wenn als Scheduled Task ausgeführt, sondern nur, wenn du interaktiv debugst.
Du denkst nur, alles sei gleich. Erfasse es empirisch, ohne Denken!
Doch, warum nicht? Er lässt es doch ausführen "nur wenn Benutzer angemeldet".
Erfahrungswert. Ich habs noch nicht in funktionierend gesehen.
Die Konstruktion hat auch zu viele Stolpersteine. Angemeldet sein ist eine Sache. Aber wenn der Bildschirm gesperrt ist fällts meistens schon auf die Nase. Als nächstes ist die Frage ob den auch mit den Steuerelementen interagiert werden muss...
Was (System-)Dienste und Geplante Tasks angeht immer keine GUI, non interactive. Dann klappts auch meistens.
Die Konstruktion hat auch zu viele Stolpersteine. Angemeldet sein ist eine Sache. Aber wenn der Bildschirm gesperrt ist fällts meistens schon auf die Nase. Als nächstes ist die Frage ob den auch mit den Steuerelementen interagiert werden muss...
Was (System-)Dienste und Geplante Tasks angeht immer keine GUI, non interactive. Dann klappts auch meistens.
In der CMD Datei setze ich den Pfad mit "set path=......" und rufe dann das Programm mit "upload.exe -start" auf
Womit du alle anderen Pfade aus der "Path" Variablen rauswirfst. Da wundert es mich ehrlich gesagt nicht das es zu Problemen kommt wenn ein Programm auf die vorher vorhandenen Einträge in der Umgebungsvariablen angewiesen ist.Statt die User-Path Variable "komplett zu überschreiben" gebe den kompletten Pfad zum Programm direkt an oder "ergänze" zumindest deine Path Variable, das Überschreiben dieser besonderen Umgebungsvariable ist keine gute Idee und eine zu vermeidende Fehlerquelle!
Das nennt man dann "Phänomen" hausgemacht ...
Zitat von @TallerBiskus:
Mit path setze ich ja nur das Arbeitsverzeichnis weil eben dort noch Dateien sind die das jeweilige Programm benötigt.
Nein tust du nicht nur, die "Path" Variable ist besonders und mit deinem Befehl wirfst du alle anderen Pfade die dort vorher drin standen raus und somit auch eventuell benötigte Pfade für andere Anwendungen, die finden dann Ihrerseits ihre Programmteile dann nicht mehr und laufen in Fehler.Mit path setze ich ja nur das Arbeitsverzeichnis weil eben dort noch Dateien sind die das jeweilige Programm benötigt.
Zitat von @TallerBiskus:
set path=z:\eigenentwicklung\teile
call z:\eigenentwicklung\teile\inetdaten.cmd
set path=z:\eigenentwicklung\internet\
call z:\eigenentwicklung\internet\bilderladen.cmd
so ist jetzt meine CMD
Path Variable "überschreiben" ist wie gesagt schlecht, besser soset path=z:\eigenentwicklung\teile
call z:\eigenentwicklung\teile\inetdaten.cmd
set path=z:\eigenentwicklung\internet\
call z:\eigenentwicklung\internet\bilderladen.cmd
so ist jetzt meine CMD
cd "z:\eigenentwicklung\teile"
call inetdaten.cmd
cd "z:\eigenentwicklung\internet"
call bilderladen.cmd
Doch wie gesagt ... es lief ja eben richtig
Bringt gar nichts wenn du uns und dir das 100 mal hier hin schreibst, wer weiß was da sonst noch für Fallen in deinem Code lauern die hier keiner sieht. Beherzige und berücksichtige "alle" Tipps dann wird vielleicht ein Schuh draus...Schon das ganze "Nur bei Anmeldung ausführen" Gedöns ist Schmuh hoch drei. Programmiere das so das eine Anmeldung nicht nötig ist, und Anmeldedaten hinterlegt man auch nicht in Textfeldern sondern im Windows-Tresor oder verschlüsselt wenn's denn sein muss.
Hallo,
wenn Du über TaskPlaner arbeiten möchtest, dann verzichte auf GUI.
Lege die Einstellungen entweder als INI/XML-Dateien ab (serialisierung ist hier richtig hilfreich).
(Evtl. kannst Du auch die Einstellungen in der Registry unterbringen.)
Auf alle Fälle solltest Du versuchen das unabhängig von einer Nutzeranmeldung zu halten. Also "GUI-frei".
Gruß
Frank
wenn Du über TaskPlaner arbeiten möchtest, dann verzichte auf GUI.
Lege die Einstellungen entweder als INI/XML-Dateien ab (serialisierung ist hier richtig hilfreich).
(Evtl. kannst Du auch die Einstellungen in der Registry unterbringen.)
Auf alle Fälle solltest Du versuchen das unabhängig von einer Nutzeranmeldung zu halten. Also "GUI-frei".
Gruß
Frank