Cela pourrait aider à comprendre le problème sous un angle différent. Supposons que vous soyez le programmeur chargé d'ajouter un planificateur de tâches à Windows. Comment feriez-vous? Vous avez plusieurs problèmes à résoudre: Si la tâche est exécutée en tant que personne autre que l'utilisateur connecté, devriez-vous ennuyer l'utilisateur connecté avec des fenêtres contextuelles d'erreur? Que faire s'il n'y a aucun utilisateur connecté au moment où la tâche est exécutée? Qu'en est-il de la différence entre un programme GUI et un programme console? Les interfaces graphiques n'ont pas stdin, stdout et stderr; le concept n'a aucun sens en eux. Qu'en est-il des programmes internes ou externes à COMMAND.COM/CMD.EXE? Ou d'autres moteurs de script? Qu'en est-il des chemins avec des espaces dans le nom de la commande? Ou dans les paramètres (options / arguments)? (Comme vous essayez de faire face maintenant ..)
Bien que je ne sois pas sûr à 100% des éléments internes ou des détails techniques complets dans ce cas, les réponses semblent être .. Les tâches sont exécutées dans une session isolée et non interactive, qui ne peut pas interagir avec l'utilisateur actuellement connecté (le cas échéant) ); Il est exécuté en s'attendant à ce qu'il n'y ait pas de sortie de console, car il n'est pas interactif, il ne peut pas simplement interrompre tout utilisateur connecté pour afficher la sortie, de toute façon (et s'il y a une sortie, stdin est le bitbucket / NULL, stdout et stderr sont connectés à l'installation de journalisation du système); Les espaces sont gérés en contournant le problème: le nom de la commande est pris EXACTEMENT tel quel , et les paramètres transmis à la commande sont spécifiés dans une autre zone de saisie dans les propriétés de la tâche.
Tout ce que cela signifie, c'est que votre tâche doit être exécutée comme si elle ressemblait à un démon (dans le monde Un * x). Tout est statique et précis. Le nom de la commande est le nom réel de la commande, sans aucun paramètre. Cela inclut souvent l'exécution d'interpréteurs de commandes / scripts, tels que CMD.EXE! Les paramètres, le cas échéant, sont spécifiés ailleurs et doivent être connus lorsque vous configurez la tâche (c'est-à-dire que vous ne pouvez pas modifier les paramètres "à la volée"). Etc.
Donc, si vous souhaitez inclure des paramètres, vous devez utiliser la section paramètres pour spécifier les paramètres. Le Planificateur de tâches ne pasessayez d'analyser le nom de la commande pour le diviser en "commande" et "args" comme le font les programmes en ligne de commande. Il le traite simplement comme un gros nom de commande complet. De même, si vous voulez des paramètres variables, comme utiliser% 1 ..% n dans les fichiers BATCH, vous ne pouvez pas le faire à partir du Planificateur de tâches lui-même; Vous devrez trouver un autre moyen. (Notez que vous ne pouvez pas non plus utiliser de variables d'environnement, car l'environnement transmis au programme dépend de l'environnement avec lequel la tâche est démarrée, PAS de l'environnement "actuel".) Vous pouvez utiliser un fichier temporaire pour enregistrer les paramètres, mais puisque vous doit spécifier un nom de fichier statique dans les propriétés de la tâche, que se passe-t-il lorsque vous êtes sur un réseau avec 5000 utilisateurs et que quatre d'entre eux essaient d'exécuter la même tâche en même temps? Ils vont tous s'entrechoquer en essayant d'écrire dans le même fichier temporaire en même temps, probablement pas ce que vous vouliez non plus. (Il existe également des solutions à ce problème, mais cela va trop loin en dehors de la portée de cette question et réponse ..)
Donc, réponse finale: dans le cas simple - le chemin que vous souhaitez passer en tant que paramètre est statique et ne change pas - vous devez soit spécifier les paramètres dans la propriété de tâche appropriée (arguments) plutôt que dans la zone Programme / Script ou utilisez un fichier de commandes. Dans un cas plus complexe - vous devrez poser la bonne question ou rechercher comment les démons fonctionnent et comment utiliser le verrouillage / les sémaphores et autres pour la communication inter-processus (IPC).
Bonne chance.