2009-10-30 00:17:46 +0000 2009-10-30 00:17:46 +0000
67
67

Exécuter plusieurs commandes sur une seule ligne dans la ligne de commande de Windows ?

Comment puis-je exécuter plusieurs commandes dans la ligne de commande de Windows avec une seule ligne?

Alors disons par exemple que je veux effectuer une mise à jour du SVN et ensuite copier tous les fichiers à un autre endroit…

svn update; copy *.* c:\development\copy\

Cela ne fonctionne évidemment pas. Y a-t-il un caractère ou un délimiteur comme “ ;” pour effectuer une opération de ce type ?

Réponses (6)

107
107
107
2009-10-30 00:24:41 +0000

Oui, il y en a un. C'est &.

&& exécutera la commande 2 lorsque la commande 1 sera terminée, à condition qu'elle n'ait pas échoué.

& s'exécutera quand même.

4
4
4
2014-02-12 06:33:03 +0000

Si vous voulez exécuter plusieurs commandes sur une seule ligne, où vous commencez les commandes par start, par exemple, si vous voulez exécuter une commande comme celle-ci :

start "" netsh dump && pause

Alors, vous devez le faire en 2 étapes (la solution sur une ligne se trouve à la fin de cette réponse).

D'abord, écrivez les commandes dans un fichier temporaire par lot (dans ce cas, vous pouvez utiliser & ou &&) :

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd

Notez que vous devez “échapper” chacun des "&"s (esperluettes) avec un "^"pour leur permettre d'être traités comme des caractères ordinaires dans le echo command.&nbsp ; Vous pouvez aussi créer le fichier temporaire par lot avec un éditeur de texte, tel que Notepad.

Ensuite, utilisez start pour lancer le fichier batch :

start "" foobar.cmd
  -or-
start "" "temporary foobar.cmd"

Note: La paire vide de guillemets est pour le "Title" qui sera affiché dans la barre de titre de la fenêtre de commande que le start ouvrira. L'argument "Title" est techniquement un argument optionnel pour start, mais il est en fait requis , si la commande que start va exécuter est entre guillemets. Par exemple, dans le deuxième exemple :

start "" "temporary foobar.cmd"

si vous laissez la paire de guillemets vides comme ceci :

start "temporary foobar.cmd"

alors start ouvrira une nouvelle fenêtre de commande, et utilisera "temporary foobar.cmd" comme nouvelle fenêtre de commande "Title", et rien ne sera exécuté dans la nouvelle fenêtre de commande).

Si vous voulez que start attende la fin du fichier batch (après que le pause soit rejeté), avant que start ne se termine, alors vous devez ajouter le /w à la commande start :

start "" /w foobar.cmd

Vous pouvez rassembler tout cela sur une seule ligne et même supprimer (effacer) le fichier temporaire (foobar.cmd) :

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd && start "" /w foobar.cmd && del foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd & start "" /w foobar.cmd & del foobar.cmd

Notez que si vous voulez supprimer le fichier temporaire, vous devez exécuter start avec le commutateur /w, sinon, le fichier temporaire sera probablement supprimé avant d'avoir pu être exécuté.

4
4
4
2009-11-16 07:41:51 +0000

Au moins dans MS-DOS 6.22, j'avais l'habitude d'utiliser la touche Ctrl+T pour obtenir une sorte de symbole de paragraphe. Cela fonctionnait exactement comme le & mentionné par Phoshi. Cependant, cela ne fonctionne que si vous avez doskey.exe en cours d'exécution.

0
0
0
2018-07-12 07:51:31 +0000

Oui utilisez & !

%command1% & %command2% exécute les deux commandes

%command1% && %command2% exécute la première commande, si cela a fonctionné exécutez la seconde commande

%command1% || %command2% exécute la première commande, si cela a échoué exécutez la seconde commande

Voir ici

-1
-1
-1
2016-12-07 17:03:12 +0000

J'ai découvert qu'en utilisant “START”, plusieurs commandes fonctionnaient (je suis sous Windows 10 Home). Par exemple :

START chrome.exe "page.web.com" & timeout 20
-2
-2
-2
2014-10-21 05:01:24 +0000

faire un fichier batch avec un nom court, par exemple bat.bat.

add cmd /c %1 
    cmd /c %2 
rem

et ainsi de suite jusqu'à 9 lignes et enregistrer

puis l'utiliser avec des guillemets doubles

bat "command one" "command two" "command three"

cmd /c exécutera chaque commande et se fermera pour la ligne suivante sans dire que c'est mieux que && juste que c'est facile.