web-dev-qa-db-fra.com

Programme de lancement par lots de script Windows et sortie de la console

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

edit: est plus compliqué que d'utiliser \I.

Le cmd appelle cygwin et cygwin démarre 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 quittez.

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

Garder le "" entre le début et votre chemin d’application.


Explication ajoutée:

Normalement, lorsque nous lançons un programme à partir d’un fichier de commandes comme ci-dessous, nous avons les fenêtres noires à l’arrière-plan, comme l’a dit OP.

%SystemRoot%\Notepad.exe

Cela était dû au bloc-notes qui s'exécutait dans la même commande Invite (processus). La commande Invite se ferme APRÈS que le bloc-notes soit fermé. Pour éviter cela, nous pouvons utiliser la commande start pour démarrer un processus séparé comme celui-ci.

start %SystemRoot%\Notepad.exe

Cette commande est correcte tant qu'elle n'a pas d'espace dans le chemin. Pour gérer l’espace dans le chemin au cas où, nous avons ajouté le " citations comme ça.

start "%SystemRoot%\Notepad.exe"

Cependant, l’exécution de cette commande ne ferait que lancer une autre invite vierge de commande. Pourquoi? Si vous recherchez le start /?, la commande start reconnaîtra l’argument entre les " comme titre de la nouvelle commande Invite à lancer. Donc, pour résoudre cela, nous avons la commande comme ceci:

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

Le premier argument de "" est de définir le titre (que nous avons défini comme vide) et le second argument de "%SystemRoot%\Notepad.exe" est la commande cible à exécuter (qui prend en charge les espaces dans le chemin).

Si vous devez ajouter des paramètres à la commande, ajoutez-les simplement entre guillemets, à savoir:

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

Utilisation start notepad.exe.

Plus d'infos avec start /?.

9
Benoit

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

start notepad.exe

Ici vous pouvez trouver plus d’informations sur start

5
brothers28

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

5
MrBogus

Hmm ... je le fais dans l'un de mes fichiers batch comme celui-ci, sans utiliser CALL ou START:

%SystemRoot%\notepad.exe ..\%URI%
GOTO ENDF

Cygwin n'est cependant pas installé sur Windows XP.

1
djangofan