È possibile inserire un carattere di nuova riga in una riga di eco in un file batch?[duplicare]

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

  •  19-09-2019
  •  | 
  •  

Domanda

Questa domanda ha già una risposta qui:

È possibile inserire un carattere di nuova riga in una riga di eco in un file batch?

Fondamentalmente voglio essere in grado di fare l'equivalente di:

echo Hello\nWorld

Puoi farlo abbastanza facilmente in Linux, ma non riesco a capire come farlo in Windows.

È stato utile?

Soluzione

echo. stampa una riga vuota.

Esempio:

echo Hello
echo.
echo world

stampe

Hello

world

Altri suggerimenti

Può essere risolto con una sola eco.

Hai bisogno di un carattere di nuova riga \n per questo.Esistono diversi modi per inserire una nuova riga nel file echo

1) Questo esempio utilizza il cursore multilinea per aggiungere una nuova riga nel comando,
la riga vuota è obbligatoria

echo Hello^

world

2) La soluzione successiva crea prima una variabile che contiene un singolo carattere di avanzamento riga.

set \n=^


rem ** Two empty lines are required

Oppure crea la nuova linea con una versione leggermente modificata

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

E usa questo personaggio con espansione ritardata

setlocal EnableDelayedExpansion
echo Hello!\n!world

Per utilizzare un carattere di avanzamento riga con il file espansione percentuale è necessario creare una sequenza più complessa

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

Oppure puoi usare il Nuova linea modificata

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.

Ma solo l'espansione ritardata della nuova riga funziona in modo affidabile, anche all'interno delle virgolette.

Dopo un po 'di sperimentazione ho scoperto che è possibile farlo senza emissione di due comandi echo separati, come descritto in Come si può eco una nuova riga nel file batch? . Tuttavia, per farlo funzionare avrete bisogno di un editor di testo che non si traduce CR a CR + LF.

Tipo:

@echo First Line

poi con NumLock su, tenere premuto il tasto ALT e digitare 10 sul tastierino numerico prima di rilasciare ALT ( deve utilizzare il tastierino numerico, non i tasti numerici top-fila). Ciò inserirà un carattere CR. Quindi digitare la seconda linea. A seconda del vostro editor e come si gestisce CR rispetto al CR + LF si può ottenere:

@echo First Line◙Second Line

o

@echo First Line
Second Line

Questo funziona da linea di comando e lavorerà in un file batch fino a quando l'editor di testo non si traduce CR a CR + LF (che i redattori di Windows / DOS fare a meno che loro di non configurare). Se il CR viene convertito in CR + LF, o se si utilizza solo LF, la seconda linea viene interpretata come un nuovo comando.

Tuttavia, non riesco a capire perché questo sarebbe preferibile rispetto semplicemente:

@echo First Line
@echo Second Line

Ahaha,

Credo di aver lavorato fuori qualcosa di abbastanza vicino ...

echo hello&echo.&echo world

produce:

ciao

mondo

echo. o echo (

farà la nuova riga vuota. Spero che questo è utile.

L'ho trovato molto istruttivo, quindi volevo pubblicare un esempio migliore utilizzando le risposte fornite

Ciò fornisce un messaggio di utilizzo ben formattato

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

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

Credo che non è possibile. Si potrebbe provare solo un ascii-carattere a questo: http://www.asciitable.com/ Ma questo sarà forse in crash il file batch.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top