Est-il possible de mettre un caractère de nouvelle ligne dans une ligne d'écho dans un fichier batch? [dupliquer]

StackOverflow https://stackoverflow.com/questions/1721258

  •  19-09-2019
  •  | 
  •  

Question

    

Cette question a déjà une réponse ici:

         

Est-il possible de mettre un caractère de nouvelle ligne dans une ligne d'écho dans un fichier batch?

Fondamentalement, je veux être en mesure de faire l'équivalent de:

echo Hello\nWorld

Vous pouvez le faire assez facilement sous Linux, mais je ne peux pas travailler sur la façon de le faire dans Windows.

Était-ce utile?

La solution

echo. imprime une ligne vide.

Exemple:

echo Hello
echo.
echo world

impressions

Hello

world

Autres conseils

Il peut être résolu avec un seul écho.

Vous avez besoin d'un retour à la ligne \n pour cela. Il y a plusieurs façons d'obtenir une nouvelle ligne dans le echo

1) Cet exemple utilise le caret multiligne pour ajouter une nouvelle ligne dans la commande,
la ligne vide est nécessaire

echo Hello^

world

2) La solution suivante crée d'abord une variable qui contient un caractère de saut de ligne unique.

set \n=^


rem ** Two empty lines are required

Ou créer la nouvelle ligne avec une version légèrement modifiée

(set \n=^
%=DONT REMOVE THIS=%
)

Et utiliser ce caractère expansion retardée

setlocal EnableDelayedExpansion
echo Hello!\n!world

Pour utiliser un caractère de saut de ligne avec pour cent l'expansion vous devez créer une séquence plus complexe

echo Hello^%\n%%\n%world

Vous pouvez aussi utiliser le Nouvelle ligne pirater

REM Creating a Newline variable (the two blank lines are required!)
set \n=^


set NL=^^^%\n%%\n%^%\n%%\n%
REM Example Usage:
echo There should be a newline%NL%inserted here.

Mais que l'expansion retardée du saut de ligne fonctionne fiable, aussi à l'intérieur des guillemets.

Après un peu d'expérimentation j'ai découvert qu'il est possible de le faire sans émettre deux commandes d'écho séparés comme décrit dans Comment pouvez-vous écho un saut de ligne dans des fichiers batch? . Cependant, pour le faire fonctionner, vous aurez besoin d'un éditeur de texte qui ne se traduit pas CR à CR + LF.

Type:

@echo First Line

puis avec NumLock, maintenez enfoncée la touche ALT enfoncée et tapez 10 sur le pavé numérique avant de relâcher ALT (vous doit utiliser le pavé numérique, et non pas les touches numériques de la rangée supérieure). Cela insérera un caractère CR. Ensuite, tapez la deuxième ligne. En fonction de votre éditeur et la façon dont il gère les CR par rapport à CR + LF vous pouvez obtenir:

@echo First Line◙Second Line

ou

@echo First Line
Second Line

Cela fonctionne à partir de la ligne de commande et fonctionnera dans un fichier de commandes, tant que l'éditeur de texte ne se traduit pas CR à CR + LF (qui éditeurs Windows / DOS ne sauf si vous les configurer pas). Si le CR est converti en CR + LF, ou si vous utilisez juste LF, la deuxième ligne est interprétée comme une nouvelle commande.

Cependant, je ne vois pas pourquoi cela serait préférable à simplement:

@echo First Line
@echo Second Line

Ahaha,

Je pense que je travaille sur quelque chose d'assez près ...

echo hello&echo.&echo world

Produit:

bonjour

Monde

écho. ou echo (

fera la nouvelle ligne vide. Espérons que cela est utile.

J'ai trouvé très instructif, donc voulu poster un meilleur exemple en utilisant les réponses fournies

Ceci fournit un message d'utilisation bien formaté

if "%1" == """" goto usage

:usage
 echo  USAGE: %0 [Set properties using -D flag] [Ant Task to Run]  &
 echo.                                                             &
 echo        Availble Command line properties                      &
 echo        --------------------------------                      &  
...

Je pense qu'il est impossible. Vous ne pouvez essayer un caractère ascii à ceci: http://www.asciitable.com/ Mais cela va peut-être planter votre fichier batch.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top