Question bête sur les batchs (.bat)

hello tous,

j’ai trois questions très bêtes sur les batchs et commandes msdos sous xp…

  1. quand on fait un fichier batch, par défaut il attend la conclusion de chaque opération pour passer à la suivante. Par exemple si le batch est

machin.exe
bidule.exe

bidule.exe ne sera lancé qu’à la fermeture de machin.exe… (pour être plus précis j’imagine que c’est seulement quand machin.exe a renvoyé quelque chose, ici qu’il se ferme en l’occurence).

Je voudrais pouvoir exécuter la deuxième ligne sans attendre le résultat de la seconde, est-ce possible ? comment ?

  1. Un problème concret : ntfsinfo est un petit utilitaire sympa de sysinterals. il n’a pas de gui. Je voudrais faire un raccourci dans le menu démarrer qui me permette de créer un fenetre ms-dos (en lancant cmd.exe par exemple), et qui dans cette fenêtre ms-dos exécuterait ntfsinfo (le but étant cette fois de conserver la fenêtre affichée pour pouvoir se servir plusieurs fois de l’utilitaire).
    Je pense donc faire un raccourci vers .bat que je placerais dans le repertoire de ntfsinfo (par exemple), mais je ne sais pas quoi mettre dans le batch pour faire ça…

  2. y a-t-il possibilité de contrôler le lancement et/ou l’arrêt de services windows via la la ligne de commande ? (pour pareil, pouvoir l’utiliser dans un .bat :slight_smile: )

Merci pour toutes vos réponses :smiley:

  1. Il faut user des opérateurs &, &&, | ou || (un des quatre, je ne sais plus lequel).
  2. cmd.exe /? devrait te donner la bonne piste à suivre pour lancer un programme dans une invite tout en la gardant après.
  3. net.exe /? (surtout : net start le_nom_du_service et net stop le_nom_du_service)

@echo off
ntfsinfo.exe c:
start /B cmd.exe

presque :smiley:

  1. & c’est en UNIX, sous dos il faut lancer un start /b monexe ou un cmd /c monexe

@echo off 
ntfsinfo.exe 
pause

  1. OK
  1. Pas besoin de .bat : Créer un raccourci vers cmd.exe /K ntfsinfo.exe suffit amplement.

merci pour vos réponses…

  1. donc concrètement je veux exécuter les commandes

“FileZilla server.exe” /start
(lancement du service filezilla server)

puis

“FileZilla Server Interface.exe”
(lancement de l’interface)

puis

exit
(fermer la fenetre de commandes sans attendre la fermeture de l’interface).

Mon bat est donc jusqu’ici :


"FileZilla server.exe" /start
"FileZilla Server Interface.exe"|exit

malheureusement, ca ne marche pas : la fenêtre dos reste ouverte après l’ouverture de l’interface de FileZilla server.

Qu’est-ce que j’ai loupé ??

  1. Zarathoustra : merci
    deltree : ca n’allait pas, puisque la fenetre se fermait dès que j’entrais quelque chose pour répondre à pause :wink:
    Raynor : merci, c’est exactement ce qu’il me fallait, parfait !

  2. Parfait, ça m’est bien utile aussi, merci beaucoup :jap:
    Edité le 06/09/2007 à 12:44

c’est pas application /start mais start /b application


@echo off
start /b calc
notepad

autre solution: le | de raynor marche aussi ( :ouch: une commande dos que je ne connaissait pas)


@echo off
notepad | calc

en supposant que ton batch se trouve dans le repertoire d’install de fillezilla


@echo off
"filezilla server.exe"
start Filezillaserverinterface.exe
exit

quand tu lances filezilla server il te pose une question: voulez vous demarrer le serveur! quand tu cliques oui il continue alors le script en lançant l’interface
grâce à la commande start il passe directement apres avoir lancé l’interface à Exit et ferme donc la fenetre de commande!

J’ai enlevé les espace du fichier “Filezillaserverinterface.exe” parce que les espaces dans les batch ça fiche le souk
tu peux faire la même chose avec fiezillaserver.exe

[edit] Le Exit ne semble pas nécessaire


pour arrêter le serveur en ligne de commande

net stop "filezilla server ftp server"

Edité le 06/09/2007 à 13:34

Le | c’est le “pipe” de redirection de flux. notepad.exe et calc.exe ne sont des programmes console (leur lancement par la console n’est pas bloquant : console utilisable même si ils sont encore en cours d’exécution).

Le notepad et calc c’était juste pour un exemple simple, ça ne se passe pas pareil en batch, notepad et clac sont bien bloquant en batch. pour le pipe, j’ai plus l’habitude du “| more” j’étais perdu.

bref Zarathoustra a donné la solution complète.

Alors pour répondre à vos remarques…

deltree :
Le

"FileZilla server.exe" /start

ce n’est ni plus ni moins qu’une commande permettant de lancer le service du serveur (c’est celle qu’exécute le raccourci “start filezilla server” créé par filezilla lors de l’install). remarque : j’aurais pu aussi faire net start nom_du_service_filezilla comme vu dans ce thread.
(ce n’est donc pas une tentative d’utilisation de start)

Et le problème, c’est que visiblement

machin.exe|exit

ca se comporte comme si j’avais simplement écrit

machin.exe

(et pourtant j’ai testé machin.exe|machin.exe, ca lance bien deux fois machin.exe)

Zara : merci beaucoup. n’y a-t-il pas moyen de faire ça en conservant le nom actuel de l’exécutable ? je demande ça par souci de propreté… j’ai essayé

start “FileZilla Server Interface.exe”

mais ca n’a pas marché.
Edité le 06/09/2007 à 21:04

microsoft aime bien mettre des espaces partout dans les noms de fichiers de son OS mais même ce dernier les gère très mal. C’est pas pour rien que sous linux on en met pas!
tu peux toujours remplacer les espaces par des _ ça sera toujours mieux que pas d’espace du tout