109 votes

Windows batch script lance le programme et quitte la console

J'ai un script batch script que j'utilise pour lancer un programme, tel que notepad.exe . Lorsque je double-clique sur ce fichier batch, le bloc-notes démarre normalement, mais la fenêtre noire de l'application cmd qui a lancé notepad.exe reste à l'arrière-plan. Que dois-je faire pour lancer l'application ? notepad.exe et faire disparaître la fenêtre cmd ?

éditer est plus compliquée que l'utilisation de \I .

Les cmd appels cygwin y cygwin commence notepad . J'utilise

start \I \path\cygwin\bin\bash.exe

et la première fenêtre (cmd) disparaît, mais une deuxième fenêtre ( \cygwin\bin\bash.exe ) est toujours en arrière-plan. Dans le script cygwin, j'ai utilisé notepad.exe & puis quitter.

244voto

checksum Points 985
start "" "%SystemRoot%\Notepad.exe"

Garder le "" entre le début et le chemin d'accès à votre application.


Explication supplémentaire :

Normalement, lorsque nous lançons un programme à partir d'un fichier batch comme ci-dessous, nous avons le Windows noir en arrière-plan comme l'a dit OP.

%SystemRoot%\Notepad.exe

Ce problème était dû au fait que le Bloc-notes fonctionnait dans la même invite de commande (processus). L'invite de commande se fermera APRÈS la fermeture du Bloc-notes. Pour éviter cela, nous pouvons utiliser l'option start pour lancer un processus distinct comme celui-ci.

start %SystemRoot%\Notepad.exe

Cette commande est correcte tant qu'il n'y a pas d'espace dans le chemin d'accès. Pour gérer les espaces dans le chemin au cas où, nous avons ajouté l'option " des citations comme celle-ci.

start "%SystemRoot%\Notepad.exe"

Cependant, l'exécution de cette commande ne ferait que lancer une autre invite de commande vierge. Pourquoi ? Si l'on consulte la page start /? , le start reconnaîtra l'argument entre la commande " comme titre de la nouvelle invite de commande qu'il va lancer. Ainsi, pour résoudre ce problème, nous avons la commande suivante :

start "" "%SystemRoot%\Notepad.exe"

Le premier argument de "" est de définir le titre (que nous définissons comme vide), et le deuxième argument de la commande "%SystemRoot%\Notepad.exe" est la commande cible à exécuter (qui prend en charge les espaces dans le chemin d'accès).

Si vous avez besoin d'ajouter des paramètres à la commande, il suffit de les ajouter entre guillemets, c'est-à-dire :

start "" "%SystemRoot%\Notepad.exe" "<filename>"

10voto

Benoit Points 35553

Utilisation start notepad.exe .

Plus d'infos avec start /? .

5voto

brothers28 Points 400

La façon la plus simple est de commencer par start

start notepad.exe

Ici vous pouvez trouver plus d'informations sur start

4voto

MrBogus Points 21

%ComSpec% /c %systemroot%\notepad.exe

1voto

Tomasz Janicki Points 41
start "" ExeToExecute

ne fonctionne pas pour moi dans le cas de Xilinx xsdk, car comme le souligne @jeb dans les commentaires ci-dessous, il s'agit en fait d'un fichier bat.

Ainsi, ce qui ne fonctionne pas de facto, c'est

start "" BatToExecute

J'essaie d'ouvrir xsdk de cette manière et cela ouvre une commande séparée qui doit être fermée pour que xsdk puisse fonctionner seul.

Avant de lancer xsdk, je lance (source) l'Env / Paths (avec settings64.bat ) afin que la commande xsdk.bat soit reconnue (simplement comme xsdk, sans l'option .bat )

ce qui fonctionne avec .bat

call BatToExecute

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X