È possibile inserire un carattere di nuova riga in una riga di eco in un file batch?[duplicare]
-
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.
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.