Comment puis-je exécuter plusieurs commandes dans la ligne de commande Windows avec une seule ligne?
Par exemple, disons que je souhaite effectuer une mise à jour SVN, puis copier tous les fichiers dans un autre emplacement ...
svn update; copy *.* c:\development\copy\
Cela ne fonctionne pas évidemment. Y a-t-il un caractère ou un délimiteur comme ';' faire quelque chose comme ça?
windows
command-line
T. Stone
la source
la source
&
et&&
ne fonctionne que sous Windows 'cmd.exe
- ce qui n’est pas le DOS.Au moins dans MS-DOS 6.22, j’utilisais la touche Ctrl+ Tpour obtenir une sorte de symbole de paragraphe. Cela a fonctionné comme l'a &mentionné Phoshi. Cela ne fonctionnera cependant que si doskey.exe est en cours d'exécution.
la source
Si vous souhaitez exécuter plusieurs commandes sur une ligne,
start
par exemple, si vous souhaitez les exécuter, par exemple, si vous souhaitez exécuter une commande comme celle-ci:Ensuite, vous devez le faire en 2 étapes (une solution à une ligne est à la fin de cette réponse).
Commencez par écrire les commandes dans un fichier de commandes temporaire (dans ce cas, vous pouvez utiliser
&
ou&&
):Notez que vous devez "échapper" chacun des
"&"s
(esperluettes) avec un"^"
pour leur permettre d'être traités comme des caractères ordinaires dans laecho
commande. Vous pouvez également créer le fichier de commandes temporaire avec un éditeur de texte, tel que le Bloc-notes.Ensuite, utilisez
start
pour démarrer le fichier de commandes:Si vous souhaitez
start
attendre la fin du fichier de commandes (après que le fichier apause
été rejeté), avant que l'opération soitstart
terminée, vous devez ajouter le/w
commutateur à lastart
commande:Vous pouvez regrouper tous ces éléments sur une ligne et même supprimer (supprimer) le fichier de traitement par lots temporaire (
foobar.cmd
):Notez que si vous souhaitez supprimer le fichier de commandes temporaire, vous devez l'exécuter
start
avec le/w
commutateur. Sinon, le fichier de commandes temporaire sera probablement supprimé avant de pouvoir être exécuté.la source
/w
vous pouvez mettre un court sommeil avant de supprimer le fichier.timeout 2
va le faire, par exemple.Si vous voulez envelopper la première commande avec un if, mais que la deuxième commande soit exécutée indépendamment, vous devez alors envelopper le if avec un cmd / c comme ceci:
cmd / c s'il existe abc. (rd / q abc) & echo hello
Si vous ne préfixez pas if avec cmd / c, alors la commande entière fera partie de if (ce que vous ne voudrez peut-être pas).
la source
(if exist abc. command₁) & command₂
start "" cmd /c "(command₁) & (command₂)"
ne peuvent être répondus nulle part sur le Web, mais constituent le seul moyen de lier la plupart des instructions de traitement par lots. Félicitations à vous.if
mais que la deuxième commande soit exécutée malgré tout, vous devez aussi envelopper leif
avec uncmd /c
», et j'ai répondu avec un moyen de le faire sanscmd /c
. Alors, pourquoi dites-vous que le seul moyen de lier la plupart des instructions de traitement par lots consiste à utilisercmd /c
? Et pourquoi jetez-vousstart
dans le mélange?Oui utiliser
&
!%command1% & %command2%
exécute les deux commandes%command1% && %command2%
lance la première commande, si cela fonctionne, lance la seconde commande%command1% || %command2%
lance la première commande, si cela échoue, lance la commande secondesVoir ici
la source
&
,&&
et||
ne sont pas réellement une commande, cela fait partie du lot. Pas une commande.%command%
peut exécuter cette chaîne en tant que commande, vue iciJ'ai constaté que l'utilisation de 'START' corrigeait le fonctionnement de plusieurs commandes (j'utilise Windows 10 Home). Par exemple:
la source
&
passtart
!start
?faire un fichier de commandes avec un nom court, c'est-à-dire bat.bat .
et ainsi de suite jusqu'à 9 lignes et économisez
puis utilisez-le avec des guillemets
cmd /c
exécute chaque commande et ferme la ligne suivante sans indiquer que c'est mieux que && simplement que c'est facile.la source