web-dev-qa-db-fra.com

garder la fenêtre de ligne de commande ouverte lors de l'exécution d'une tâche planifiée exécutant un fichier de commandes

J'aimerais que la fenêtre de la console reste ouverte lors de l'exécution d'une tâche planifiée qui exécute un fichier de commandes. Si je l'exécute manuellement, c'est-à-dire que le fichier de commandes est exécuté, la fenêtre reste ouverte, mais le planificateur de tâches ne s'ouvre pas mais je peux voir que la tâche est toujours en cours d'exécution. Je mets une pause à la fin pour faire cela.

 @echo off 
 TITLE PROCESS_MGR
 tasklist /FI "IMAGENAME eq JOESMO.exe" | find /I "JOESMO.exe">nul &&(echo PROCESS 
 JOESMO.exe IS ALREADY RUNNING! 
 echo %DATE%
 echo %TIME%
 pause
 ) || (
 echo JOESMO PROCESS IS NOT RUNNING 
 cmd /c start "JOESMO.exe" "C:\Users\xxxx\Documents\
 Visual Studio 2010\Projects\Projects2013\JOESMO.exe"
 pause)

J'ai trouvé cette suggestion cmd/k myscript.bat mais après avoir créé la tâche dans le planificateur de tâches pour Windows Server 2008, je ne sais pas trop où l'appliquer. J'ai ajouté/k à la zone d'ajout d'arguments dans l'action d'édition de la tâche.

11
vbNewbie

Dans la boîte de dialogue Tâche planifiée, juste avant le nom du fichier de commandes qu'il va exécuter (il porte le nom Program/script. Vous avez maintenant quelque chose comme:

myscript.bat

Le changer en 

cmd 

Ajoutez les éléments suivants à l'entrée ** Add Arguments (facultatif):

/k "C:\My Batch File Folder\MyScript.bat"

Testé sur mon système (Win7 64 bits), et cela a fonctionné parfaitement. Je regarde la fenêtre de commande ouverte créée lorsque je tape ce texte. :-)

21
Ken White

Malheureusement, la solution de Ken ne fonctionnant pas pour moi sur un serveur Windows 2008 R2 Std, j'ai pu ouvrir une fenêtre interactive en modifiant le paramètre des tâches planifiées à l'aide de schtasks.exe.

Dans une fenêtre de commande, j'ai exécuté la commande suivante:

schtasks /Change /TN "My Task" /IT

Cependant, cela nécessite que vous soyez connecté en tant que contexte utilisateur dans lequel la tâche planifiée est en cours d'exécution. Donc, si votre tâche planifiée utilise le système localsystem "taskaccount", vous devrez vous connecter au système en tant qu'utilisateur "taskaccount".

Bizarrement, cela a fonctionné lorsque j’ai exécuté manuellement la tâche, mais cela ne m’a pas été utile lorsqu’elle a démarré à une heure programmée.

4
David Yu

La réponse de Ken n'a pas fonctionné pour moi.

Trouvé cette façon de faire:

dans votre fichier BAT (créez-en un si vous n’avez qu’un fichier EXE): 

start C:/Absolute/Path/To/MyScript.exe myScriptArg

fonctionne comme un charme!

Remarque: Dans la tâche planifiée, vous devez cocher "Exec uniquement si l'utilisateur est connecté".

2
Apolo

J'ai essayé tout ce qui précède, mais ils n'ont pas fonctionné pour moi. Voici ce que j'ai fait pour que cela fonctionne:

Plate-forme Windows Server 2003 R2 SP2 ActivePERL v5.10.1

Pas

  1. Créer un script DOS BATCH - exécute le programme actuel, par exemple, myscript.bat
  2. Créer un script Perl pour appeler le script batch DOS, c.-à-d. Myscript.pl
  3. myscript.pl est un script d'une ligne: system ("e:\scripts\myscript.bat");
  4. Créer une tâche planifiée: Perl myscript.pl

La fenêtre d'invite de commande DOS s'ouvre toujours. Et plus important encore, la tâche est maintenant exécutée et terminée avec succès. REMARQUE: La tâche planifiée utilisateur RunAs est connectée au serveur.

0
Eben Yong

Créez un raccourci vers le fichier de commandes et mettez-le dans l'action. A travaillé pour moi

0
Danno Scott