J'ai une tâche planifiée qui démarre un script batch qui s'exécute robocopy
toutes les heures. Chaque fois qu'il s'exécute, une fenêtre apparaît sur le bureau avec la sortie de robocopy, ce que je ne souhaite pas vraiment voir.
J'ai réussi à faire paraître la fenêtre réduite en faisant exécuter le travail planifié.
cmd /c start /min mybat.bat
mais cela me donne une nouvelle fenêtre de commande toutes les heures. Cela m'a surpris, étant donné que cmd /c
"Exécute la commande spécifiée par string puis se termine" - je dois avoir mal compris la documentation.
Existe-t-il un moyen d'exécuter un script de traitement par lots sans que cela ne fasse apparaître une fenêtre cmd?
Réponses:
Vous pouvez l'exécuter en mode silencieux à l'aide d'un fichier de script Windows. La méthode d'exécution vous permet d'exécuter un script en mode invisible. Créer un
.vbs
fichier comme celui-ciet le programmer. Le deuxième argument de cet exemple définit le style de la fenêtre. 0 signifie "cacher la fenêtre".
Syntaxe complète de la méthode Run :
Arguments:
la source
Exécutez-vous cela comme une tâche planifiée? Si tel est le cas, il ne sera pas visible pour l'utilisateur connecté. Si le script ne nécessite aucun accès réseau aux éléments nécessitant une autorisation Windows (tels que des partages de fichiers ou des imprimantes), vous pouvez l'exécuter en tant que "nt author \ system" et laisser le mot de passe vide. Sous Windows 7, configurez simplement l'utilisateur sur SYSTEM et appuyez sur OK.
(Vous devrez probablement utiliser un utilisateur réel si vous utilisez robocopy ...)
JR
la source
Configurez simplement la tâche planifiée comme "Exécuter si l'utilisateur est connecté ou non".
la source
Vous pouvez également essayer CHP (Créer un processus caché) , fait exactement ce que vous penseriez ...
Fonctionne sans fenêtre de commande. Parfait! Fabriqué par les mêmes personnes que CMDOW, mais c'est plus approprié.
la source
CMDOW est un outil formidable qui vous permet de faire beaucoup de choses dans Windows depuis la ligne de commande.
Une des choses les plus simples à faire est de cacher la fenêtre courante (généralement en première ligne du fichier bat) avec:
ou démarrer un nouveau processus caché avec
la source
Essayez d’appeler le script avec
la source
start
n'est pas un programme, c'est une commande. Vous devez spécifiercmd
le programme à exécuter et/c start /b <file>
l'argument. Cependant, cela ne fonctionnera toujours pas, car cela créera toujours une fenêtre de consolecmd
et affichera une fenêtre noire à l'écran.Vous pouvez créer un raccourci vers le fichier de commandes, définir le raccourci de manière à ce qu'il soit réduit au minimum (dans les propriétés du raccourci, dans l'onglet 'Raccourci'), puis définir le travail de manière à démarrer le raccourci.
Important : vous devez spécifier manuellement le chemin d'accès au raccourci en le saisissant dans le champ de texte Exécuter, avec l'extension ".lnk". si vous essayez simplement d'y accéder, il se redirigera utilement vers ce que le raccourci pointe.
la source
Je me rends compte que cette question a déjà été résolue avec une résolution parfaitement bonne, native de Windows et donc devrait être la plus compatible, et je suis tout à fait d’accord.
Je voulais également dire que je ne suis pas d'accord avec le commentaire de @ splattne (mais pas sa réponse réelle), à savoir que la résolution de l'autre fil de discussion cité mérite le crédit. Cette réponse implique d'exécuter le script en tant qu'utilisateur différent (SYSTEM), ce qui revient à peu près à donner au script un accès racine. Il échouera également pour des travaux tels que
ROBOCOPY
(comme référencé par John Rennie), qui nécessitent un accès réseau.Je n'ai jamais essayé
CMDOW
auparavant, mais j'aimerais proposer une autre résolution similaire, qui [bien que n'étant pas installée en mode natif sous Windows] reste très portable pour la plupart des versions, et existe en versions 32 et 64 bits, à savoir NirCmd .NirCmd est un outil très puissant qui offre une myriade d'options, dont la plus utile, que je trouve personnellement, est sa capacité à lancer des fenêtres de commande cachées en exécutant simplement ce qui suit:
Dans la
exec
section Référence de la commande NirCmd :Exécute une application et spécifie éventuellement un ou plusieurs paramètres de ligne de commande pour l'application exécutée. Le paramètre [show / hide / min / max] spécifie si l'application en cours d'exécution sera visible ou non. Si 'masquer' est spécifié, l'application en cours d'exécution ne sera pas visible pour l'utilisateur. Si 'max' est spécifié, la fenêtre de l'application en cours d'exécution sera maximisée. Si 'min' est spécifié, la fenêtre de l'application en cours d'exécution sera réduite.
EDIT: J'essayais d'exécuter un
ROBOCOPY
travail et d'essayer la méthode dans cette réponse, et cela n'a pas fonctionné, même après avoir modifié les privilèges d'accès au réseau. J'ai essayé de double-cliquer sur le script et je ne pouvais pas le faire fonctionner, mais je ne pouvais le faire fonctionner que sous une invite de commande élevée. J'ai créé un raccourci vers le fichier de commandes et je l'ai exécuté en tant qu'administrateur. J'ai pu le faire exécuter en double-cliquant dessus, mais la méthode utilisée a été de l'exécuter caché en tant que SYSTEM (je sais, je sais) - mais cela fonctionneROBOCOPY
pour ce que ça vaut, tant que le fichier batch a les permissions appropriées.EDIT 2: pour une raison quelconque, cela ne fonctionnerait pas en tant que SYSTEM (probablement l’accès réseau mentionné plus haut) - je ne l’ai remarqué qu'après avoir exécuté
ROBOCOPY
le drapeau / L, qui est essentiellement une simulation et qui [apparemment] ne fonctionne pas Je me connecte effectivement au système distant, mais lorsque je lance le fichier de commandes avec les privilèges les plus élevés et que je coche la case cachée, je peux toujours l'exécuter en tant qu'utilisateur connecté en arrière-plan sans afficher de fenêtre de commande, quelle qu'en soit la valeur pour quiconque .la source
Une autre solution que j'ai utilisée est Hidden Start
la source
Essayez de placer une commande de sortie à la fin de votre fichier de commandes. Cela devrait fermer la fenêtre de commande lorsque le script est terminé.
la source
Pour masquer la sortie (mais pas la fenêtre), ajoutez ceci au début de votre fichier batch:
la source