web-dev-qa-db-fra.com

Comment puis-je insérer une nouvelle ligne dans une commande cmd.exe?

J'essaie d'exécuter une commande sur cmd.exe, avec un saut de ligne ou une nouvelle ligne dans le cadre de la commande, comme ci-dessous:

command -option:text  
whatever

Mais chaque nouvelle ligne exécute la commande au lieu de la continuer sur la ligne suivante.

Alors, comment puis-je entrer un nouveau caractère de ligne ou créer une commande multiligne dans cmd.exe?

20
rudimenter

Utilisez le caractère ^ comme échappement:

command -option:text^

whatever

Je suppose que vous utilisez cmd.exe à partir de Windows XP ou similaire. Ce n'est pas le DOS réel. Si vous utilisez le DOS actuel (MS-DOS, Win3.1, Win95, Win98, WinME), alors je ne crois pas qu'il y ait d'échappatoire pour les retours à la ligne. Vous devez exécuter un shell personnalisé. cmd.exe vous demandera "Plus?" chaque fois que vous appuyez sur Entrée avec un ^ à la fin de la ligne, il vous suffit d'appuyer à nouveau sur Entrée pour réellement sortir/insérer une nouvelle ligne.

17
Darth Android

Utiliser les codes Alt avec le pavé numérique

C:\>ver

Microsoft Windows [Version 6.3.9600]

C:\>echo Line1◙Line2 >con
Line1
Line2

C:\>

Ce caractère de saut de ligne peut être saisi en tant que code alternatif sur la CLI à l'aide du pavé numérique: avec la touche Verrouillage numérique enfoncée, maintenez la touche ALT enfoncée et tapez 10 avant libérer ALT. Si vous avez également besoin du CR, saisissez-les tous les deux avec Alt + 13, puis Alt + 10: ♪◙

Remarque: cela ne fonctionnera pas dans un fichier de commandes.

Exemple de cas d'utilisation:

Vous essayez de lire les variables d'environnement% PATH% ou% CLASSPATH% pour avoir un aperçu rapide de ce qu'il contient et dans quel ordre - mais le mur de texte renvoyé par path est illisible. Ensuite, vous pouvez taper rapidement quelque chose:

echo %path:;=◙% >con

Modifier:

Ajout de la solution de contournement >con découverte par Brent Rittenhouse pour les versions plus récentes de cmd.exe, dans lesquelles la méthode d'origine avait cessé de fonctionner.

4
Amit Naidu

Les sorties de ^ sont sauvegardables

set br= ^
<</br (newline)>>
<</br>>

exemple:

@echo off
setlocal enableExtensions enableDelayedExpansion
rem cd /D "%~dp0"


rem //# need 2 [/br], can't be saved to a var. by using %..%;
set br= ^



set "t=t1!br!t2!br!t3"

for /f "tokens=* delims=" %%q in ("!t!") do (
    echo %%q
)


:scIn
rem endlocal
pause
rem exit /b

; sortie:

t1
t2
t3
Press any key to continue . . .
1
Ilias

Je ne sais pas si cela fonctionnera pour vous mais en mettant & echo (l'espace suivant est important). entre chaque déclaration que vous voulez sur une nouvelle ligne. Je n’ai essayé cela qu’avec un simple fichier de

echo %1

Puis enregistré cela sous le nom testNewLines.bat

Alors alors la ligne cmd

testNewLines first line&echo Second Line&echo Third line

Résultat: les éléments suivants sont renvoyés

première ligne
deuxième ligne
Troisième ligne

1
Haydar

En développant la réponse d’Amit ( https://superuser.com/a/1132659/955256 ), j’ai trouvé un moyen de le faire dans n’importe quelle police SANS utiliser le console héritée.

Tout ce que vous avez à faire est simplement de faire écho la ligne avec alt-10 caractères, puis de le rediriger vers con et cela fonctionnera!

Par exemple, étant donné:

(echo New-line détecté rigghhhtt ◙ ^ <--- ICI!)> CON

edit: Fait amusant, il semble que vous puissiez mettre la redirection au début de la manière suivante:

> CON echo Nouvelle ligne détectée rigghhhtt ◙ ^ <--- ICI!

Bizarre, hein?

Vous obtiendrez une sortie de:


New-line detected rigghhhtt  
<-- HERE!

(Les parenthèses environnantes sont facultatives.)

Here est un exemple plus robuste de ce que vous pouvez faire avec cet AND. Les retours à la ligne fonctionnent désormais de manière totalement indépendante !:

Mieux encore, cela fonctionne si vous redirigez également vers un fichier!
(remplacez simplement > CON par > desired_output_file.txt

Prendre plaisir!

1
Brent Rittenhouse

Je crois que vous ne pouvez pas faire cela à partir du shell Windows cmd.exe. ( C'est pas DOS. )


Vous n'avez pas besoin d'un "shell personnalisé" complet pour cela. Vous aurez seulement besoin d'écrire quelque chose comme ceci (exemple dans Python ):

import subprocess
subprocess.call(["C:\\bin\\sometool.exe", "test\nwith\nnewlines"])

Ou Ruby:

Kernel::exec "C:\\bin\\sometool.exe", "test\nwith\nnewlines"

Vous voyez, ce n'est pas si difficile.

0
grawity