Es könnte helfen, das Problem aus einer anderen Perspektive zu verstehen. Nehmen wir an, Sie sind der Programmierer, der damit beauftragt wurde, einen Taskplaner zu Windows hinzuzufügen. Wie würden Sie das tun? Sie müssen sich mit mehreren Problemen auseinandersetzen: Wenn die Aufgabe als ein anderer als der angemeldete Benutzer ausgeführt wird, sollen Sie den angemeldeten Benutzer mit irgendwelchen Fehler-Popups belästigen? Was ist, wenn es zum Zeitpunkt der Ausführung des Tasks keinen angemeldeten Benutzer gibt? Was ist der Unterschied zwischen einem GUI-Programm und einem Konsolenprogramm? GUI’s haben kein stdin, stdout und stderr; das Konzept ist bei ihnen sinnlos. Was ist mit Programmen innerhalb oder außerhalb von COMMAND.COM/CMD.EXE? Oder anderen Scripting-Engines? Was ist mit Pfaden mit Leerzeichen im Befehlsnamen? Oder in den Parametern (Optionen/Argumente)? (So wie Sie jetzt versuchen, damit umzugehen…)
Ich bin mir zwar nicht 100%ig sicher, was die Interna oder alle technischen Details in diesem Fall angeht, aber die Antworten scheinen zu sein. Tasks werden in einer isolierten, nicht-interaktiven Sitzung ausgeführt, die nicht mit dem aktuell angemeldeten Benutzer interagieren kann (falls vorhanden); Es wird in der Erwartung ausgeführt, dass es keine Konsolenausgabe gibt, da es nicht-interaktiv ist, kann es nicht einfach jeden angemeldeten Benutzer unterbrechen, um die Ausgabe zu zeigen (und wenn es eine Ausgabe gibt, ist stdin das Bitbucket/NULL, stdout und stderr werden in der Systemprotokollierung protokolliert); Leerzeichen werden durch Umgehung der Ausgabe behandelt: Der Befehlsname wird EXAKT so übernommen, wie er ist, und die Parameter, die an den Befehl übergeben werden, werden in einem anderen Eingabefeld in den Task-Eigenschaften angegeben.
Was das alles bedeutet, ist, dass Ihr Task wie ein Daemon (in der Un*x-Welt) ausgeführt werden muss. Alles ist statisch und präzise. Der Befehlsname ist der eigentliche Befehlsname, ohne jegliche Parameter. Dies schließt oft das Ausführen von Befehls-/Skriptinterpretern ein, wie z. B. CMD.EXE! Die Parameter, falls vorhanden, werden an anderer Stelle angegeben und müssen bekannt sein, wenn Sie die Aufgabe einrichten (d. h. Sie können die Parameter nicht “on-the-fly” ändern). Und so weiter.
Wenn Sie also Parameter einbeziehen wollen, müssen Sie den Abschnitt Parameter verwenden, um die Parameter anzugeben. Der Taskplaner versucht nicht, den Befehlsnamen zu analysieren, um ihn in “command” und “args” aufzuteilen, wie es Kommandozeilenprogramme tun. Er behandelt ihn einfach als einen großen, vollständigen Befehlsnamen. Wenn Sie variable Parameter verwenden möchten, wie z. B. %1 … %n in BATCH-Dateien, können Sie dies nicht über den Taskplaner selbst tun; Sie müssen einen anderen Weg finden. (Beachten Sie, dass Sie auch keine Umgebungsvariablen verwenden können, da die an das Programm übergebene Umgebung von der Umgebung abhängt, mit der der Task gestartet wird, NICHT von der “aktuellen” Umgebung). Sie könnten eine temporäre Datei zum Speichern der Parameter verwenden, aber da Sie in den Task-Eigenschaften einen statischen Dateinamen angeben müssen, was passiert, wenn Sie sich in einem Netzwerk mit 5000 Benutzern befinden und vier von ihnen versuchen, denselben Task gleichzeitig auszuführen? Sie werden sich alle gegenseitig in die Quere kommen, wenn sie versuchen, gleichzeitig in dieselbe temporäre Datei zu schreiben, was wahrscheinlich auch nicht das ist, was Sie wollten. (Auch für dieses Problem gibt es Lösungen, aber das würde den Rahmen dieser Frage und Antwort sprengen…)
Also endgültige Antwort: Im einfachen Fall – der Pfad, den Sie als Parameter übergeben wollen, ist statisch und ändert sich nicht – müssen Sie die Parameter entweder in der entsprechenden Task-Eigenschaft (Argumente) und nicht im Feld Programm/Skript angeben oder eine Batch-Datei verwenden. In einem komplexeren Fall – müssen Sie die richtige Frage stellen oder recherchieren, wie Daemons funktionieren und wie man Sperren/Semaphoren und dergleichen für die Interprozesskommunikation (IPC) verwendet.
Viel Glück.