web-dev-qa-db-fra.com

Comment démarrer un fichier batch minimisé avec le planificateur de tâches dans Windows 8? - La méthode% comspec% ne fonctionne plus après Windows 7

Après Windows XP, j'utilise toujours l'astuce ci-dessous pour démarrer des fichiers batch minimisés avec le Gestionnaire des tâches de Windows.

De http://www.pcreview.co.uk/forums/running-bat-files-minimized-scheduler-t2125918.html :

"pré-requis: tous vos fichiers batch ont une commande exit pour terminer les actions. Si vous ne quittez pas, vous terminerez avec une invite de commande clignotante.

C'est ce que je continue à utiliser:

%comspec% /c start /min "C:\Scripts\Destination_inbound_ftp5.bat"

Lorsque vous enregistrez ceci dans les propriétés, vous obtiendrez une boîte de dialogue de suivi vous demandant si vous vouliez que tout cela soit des paramètres ou non. Répondez NON et la tâche sera enregistrée comme prévu.

J'ai également lu la question Stack Overflow "start% comspec%/c script.cmd" vs "start cmd/C second.cmd script.cmd", ce qui m'a fait remplacer l'instruction "% comspec%" par "C:\Windows\system32\cmd.exe", mais cela n'a rien changé non plus.

Le problème est que maintenant, au lieu d'un fichier bat en cours d'exécution minimisé, je me retrouve avec juste une invite de commande, minimisée mais sans aucune des commandes batch exécutées. Le statut du planificateur de tâches reste "en cours d'exécution" :(

Comment faire cela sous Windows 8 (64 bits)? De préférence avec des commandes par lots à l'ancienne au lieu de PowerShell (ou pire; p)

32
user225479

La commande de démarrage a besoin du premier "" guillemets pour désactiver la fonction de titre. Essayez de planifier ceci:

%comspec% /c start "" /min "C:\Scripts\Destination_inbound_ftp5.bat"
23
foxidrive

En supposant que Windows 8 est identique à Windows 7, une "sortie" ne fera que quitter le fichier de commandes (ce qu'il fera de toute façon).

Vous devez ajouter le code de sortie comme ceci:

Sous "Programme/Script":

CMD (ou command.exe, ou% comspec%)

Sous "Arguments:

/c start "Title" /min "C:\Scripts\Destination_inbound_ftp5.bat" ^& exit
10
RationalRabbit

Je n'ai pas aimé voir la fenêtre de commande apparaître puis disparaître alors voici une autre solution de https://ss64.com/vb/run.html ...

Créez d'abord invisible.vbs avec cette seule ligne de texte:

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

Ensuite, lancez votre fichier cmd ou batch via:

%SystemRoot%\system32\wscript.exe "invisible.vbs" "myscript.cmd" //nologo

Ta da! Les scripts de ce type sont intégrés à Windows depuis longtemps. Si vous êtes curieux, faites une recherche sur le Web pour "WSH" (Windows scripting Host). Vous pouvez même écrire de tels scripts en dialecte JavaScript appelé JScript.

5
Neil C. Obremski

Autre possibilité: un petit logiciel gratuit nommé CMDH , qui exécute simplement les commandes demandées en arrière-plan . Par exemple:

cmdh MyScript.cmd

Pas besoin d'ajouter "exit" au script. Testé fonctionnant sous Windows XP SP3, et il n'y a aucune raison qu'il échoue sous Windows 8.

5

Peut-être que ce n'est pas la même chose que vous voulez dire, mais si je lance simplement un fichier .bat avec le planificateur et que je coche cette case "Cachée" dans l'onglet Général des propriétés de la tâche, il démarre minifié.

enter image description here

2
Flion

Voici une solution de https://ss64.com/vb/run.html qui exécutera un fichier de commandes dans une fenêtre réduite. Contrairement aux autres solutions qui utilisent la commande start avec /min, celui-ci ne fera pas clignoter une nouvelle fenêtre sur votre écran, ne volera pas le focus ou n'interrompra pas les activités en plein écran.

Créez d'abord un fichier nommé run_minimized.vbs avec cette seule ligne de texte:

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 2, False

Ensuite, créez votre tâche du Planificateur de tâches avec une action pour démarrer le programme wscript.exe avec ces arguments:

"c:\path\run_minimized.vbs" "c:\path\my script.bat"

Modifiez les chemins si nécessaire pour spécifier les emplacements des deux fichiers.

Il n'existe aucun moyen simple de passer des arguments du Planificateur de tâches au fichier de commandes tout en préservant également les espaces et les guillemets, car wscript supprime les guillemets de ses arguments. La façon la plus simple de gérer les arguments avec des espaces serait de placer la commande de fichier de commandes entière dans les vbs:

CreateObject("Wscript.Shell").Run  """c:\path\my script.bat"" ""arg 1"" arg2", 2, False

Notez l'utilisation de guillemets. Il y a une paire de guillemets " entourant la chaîne de commande entière et une paire de caractères de citation adjacents "" chaque endroit où vous utiliseriez un guillemet normal dans une ligne de commande.

2
balazer