Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Batch] ouvrir deux fenêtres avec un seul script

Sujet résolu
11 juin 2011 à 3:37:01

Bonjour,

Je cherche à créer un script batch qui une fois lancé ouvrirait une nouvelle fenêtre via la commande "start" et exécuterait du code dans celle çi. Le seul problème est que si j'arrive bien à ouvrir une nouvelle fenêtre en tapant "start" dans mon script, impossible d'y exécuter du code. Quelqu'un aurait une idée ? Ma seule contrainte est que je ne peux pas faire appel à un autre fichier (sinon ça serait trop facile : "start mondeuxiemefichier.bat" et je ne serais pas ici :p )

Si quelqu'un sait comment résoudre ce problème je suis preneur :)

Merci d'avance.

KaitoKito.
  • Partager sur Facebook
  • Partager sur Twitter
11 juin 2011 à 7:48:36

Bonjour, à ma connaissance tu ne peux pas le faire directement avec un seul fichier. Le mieux serait d'écrire un second fichier à l'aide du premier puis de lancer le second fichier et ensuite de supprimer ce fichier, ça passerait presque inaperçu.
  • Partager sur Facebook
  • Partager sur Twitter
11 juin 2011 à 11:59:21

Tu n'as pas essayer de voir les détails d'aide de cmd.exe ?

C:\> cmd /c ma_commande_qui_tue /ses_arguments_qui_tuent

Différence entre /k et /c : avec /c l'invite de commande supplémentaire se refermera dès que la commande a fini. Avec /k, elle persistera en redonnant la main à l'utilisateur. ;)
  • Partager sur Facebook
  • Partager sur Twitter
11 juin 2011 à 12:40:26

Avec ton code, ça s'exécute dans la même instance de cmd, pas dans une autre.
  • Partager sur Facebook
  • Partager sur Twitter
11 juin 2011 à 12:48:03

Effectivement, j'avais mal compris. Ça marche, je ne connaissais pas.
  • Partager sur Facebook
  • Partager sur Twitter
11 juin 2011 à 13:04:56

Pour tout avouer, je connaissais pas non plus. Mais en bidouillant, on découvre des choses... :D
  • Partager sur Facebook
  • Partager sur Twitter
11 juin 2011 à 18:49:52

Citation : Darth Killer

Tu n'as pas essayer de voir les détails d'aide de cmd.exe ?

C:\> cmd /c ma_commande_qui_tue /ses_arguments_qui_tuent


Différence entre /k et /c : avec /c l'invite de commande supplémentaire se refermera dès que la commande a fini. Avec /k, elle persistera en redonnant la main à l'utilisateur. ;)



Moui mais cela ne m'aide pas. Je dois juste afficher plusieurs echo dans une autre fenêtre. Une autre solution serait de pouvoir demander à une seule commande echo d'aficher plusieurs lignes. C'est possible ?
  • Partager sur Facebook
  • Partager sur Twitter
12 juin 2011 à 1:41:41

Je suis tombé grâce à une recherche sur ceci pour effectuer plusieurs commandes séquentiellement, c'est à dire les unes à la suite des autres mais le tout sur la même ligne.

Apparemment il suffit d'utiliser & comme séparateur.

C:\> start cmd /c echo Ligne1&echo Ligne2&echo Ligne3
  • Partager sur Facebook
  • Partager sur Twitter
12 juin 2011 à 18:59:28

Bonjour, tu peux le faire comme ceci :

EDIT :

@echo off
start cmd /k echo Ligne1 ^&echo Ligne2 ^&echo Ligne3


Code testé et approuvé par moi :p

Le commutateur '/k' fait que "l'instance" de l'invite de commandes lancé reste actif.

Bonne soirée ^^
  • Partager sur Facebook
  • Partager sur Twitter
12 juin 2011 à 21:42:05

'faudra remplacer par /c pour qu'elle se barre après commande quoi.

Mais tu fais ^& pour séparer les commandes de la séquence ? Je lisais qu'il fallait juste & moi...
  • Partager sur Facebook
  • Partager sur Twitter
12 juin 2011 à 22:39:04

Hmm je sais que sans le "^" sa ne fonctionne pas car j'ai testé ;)
Donc sa doit en effet "séparer les commandes de l'ancienne séquence (celle lancé avec le bacth, c'est à dire avant le 'start cmd')" (d'après moi).

'/c' ? Bah tout depend de ce qu'il veux faire mais il dit de vouloir afficher plusieurs lignes, vaut mieux que ces lignes soivent lu sinon je ne vois pas l'utilité donc avec un '/c' ils ne seront pas lu, après on ne connait pas le but de son script, donc à lui de voir pour un '/c' ou '/k'.
  • Partager sur Facebook
  • Partager sur Twitter
13 juin 2011 à 14:27:56

la séquence de commande c'est la liste de commandes rédigées sur une même ligne qui vont être exécutées successivement. Donc batch ou pas batch, osef pour le coup. :p
Je viens de tester ceci :
cmd /c cls&echo test&pause

Et ça marche au poil. Donc je sais pas ce que tu as testé... :-°


Quand à afficher plusieurs lignes, ça dépend aussi de la durée des commandes en séquence. Il se peut très bien que ces lignes soient justement des messages d'avancement de l'opération. ;)
Et d'un autre côté, si c'est un script automatisé, on a pas envie d'attendre que l'utilisateur ferme le nouvel invite de commande pour continuer (pas élégant, etc...) donc /c sera plus adapté. :p


Edit
Après avoir testé avec start j'ai remarqué que & seul envoi les commandes dans la fenêtre appelante, et non dans la fenêtre appelée. ^& en revanche fait ce qu'on veut faire, donc c'est lui à utiliser du coup.
cmd /k start cmd /c cls^&echo test^&pause

Il faudrait donc mieux se renseigner sur l'effet de ce ^...
  • Partager sur Facebook
  • Partager sur Twitter
13 juin 2011 à 15:34:06

Citation : Darth Killer

cmd /c cls&echo test&pause
Et ça marche au poil. Donc je sais pas ce que tu as testé...


J'ai testé directement avec le 'start cmd', je me suis mis dans les meilleurs conditions possible pour que le code fonctionne en fonction de ce qu'il veut faire.

Tu aurai du éditer cette ligne aussi du coup :p ( J'aime taquiner t'inquiète pas )

Pour le '/c' ou '/k' à lui de voir, en tout cas avec toutes nos recherches/informations, il doit avoir ce qu'il faut :)

Il nous reste plus qu'à attendre sa réponse :D

EDIT : Grosse erreur grammaticale corrigé ! :lol:
  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2011 à 13:52:34

Hello,

Après une nuit blanche sur ce script (pas que sur la partie nouvelle instance ^^, en fait il va grosso merdo faire une sauvegarde de ma machine, et je voulais qu'il affiche un gros "FINI" fait en ascii art dans une nouvelle fênetre) j'ai utilisé la méthode de ZaiBai (l'emploi de ^& pour être exact) et elle a marché :) Merci bien en tout cas pour m'avoir aidé.

KaitoKito.
  • Partager sur Facebook
  • Partager sur Twitter
20 mai 2017 à 19:23:08

Alors c compliqué ais quand tu as comprit c facile !!

Alors au début créé un bat avec la commande cmd à l'interrieur et tu le nomera bat1, 

ensuite dans le bat ou tu veux que la fenetre s'ouvre , met start bat1

si tu veux qu'il s'ouvre pendant qulque secnde tiens la commande :timeout /t secondes /nobreak>nul

-
Edité par ColinSbr 20 mai 2017 à 19:24:29

  • Partager sur Facebook
  • Partager sur Twitter
26 mai 2017 à 2:53:07

@ColinSbr j'ose espérer que depuis 2011 l'OP a trouver une solution à son problème. Merci d'éviter de déterrer d'ancien message.

Je ferme ce déterrage.

  • Partager sur Facebook
  • Partager sur Twitter