CMD Echo mehrere Zeilen?
Guten Abend Community,
ich möchte aktuell eine Batch machen mit diesem Inhalt:
@echo off
start cmd.exe /k "echo
Zeile 1
Zeile 2
Zeile 3
Zeile 4
Zeile 5
Zeile 6
Zeile 7
pause
Ganz einfach gesagt ich möchte das sich CMD öffnet und den Befehl echo ausführt, nur dass Problem ist dass ich Zeile 1 - 7 als Text benutzen möchte und ich nicht weiß mit welcher Variable ich ihm sage, dass er alle Zeilen als echo ausführen soll.
Hier der Screenshot von meiner Batch: https://prnt.sc/tevpko.
Ich hoffe ihr habt meine Frage verstanden bei Fragen einfach gerne stellen.
MfG Ree
3 Antworten
Es werden alle Zeilen als
echo
ausgeführt bis zum Befehl
echo off
.
Besser gesagt, was muss ich für eine Variable setzen nach dem "/k" ?
start cmd.exe /k "echo [Hier muss aber noch eine Variable sein, die angibt, dass der Befehl in der nächsten Zeile weitergeht]
Danke für die Antwort.
Jedoch verstehe ich jetzt nicht was ich bearbeiten soll... Ich möchte ja durch: start cmd.exe /k bewirken, dass CMD sich öffnet und durch das /k ein Befehl ausgeführt wird. Nur führt er den Befehl aus der Zeile aus und nicht aus allen.
MfG
Du musst jede Zeile einzeln mit echo ausgeben.
Erstmals danke für deine Antwort,
jedoch denke ich, dass du nicht richtig gelesen hast. Es fängt mit start cmd.exe /k an. Dies startet CMD und /k bewirkt ja, dass ein Befehl ausgeführt wird. Nur der Echo befehl geht über mehrere Zeilen und die Frage war eben wie er alle Zeilen ausgibt.
Du kannst ohne gewaltige Trickserei keine Zeilenvorschübe in einer Kommandozeile unterbringen.
Für kleinere Texte genügt es mehrere Echos per & zu trennen:
@echo off
rem Umlaute und Unicode anzeigen...
chcp 65001 >nul
rem mehrere Befehle in einer Zeile werden durch ein Ampersand & getrennt...
rem folglich kann man mehrere echos innerhalb einer Zeile angeben... (insgesamt jedoch nicht mehr als 8191 Zeichen)
start "" cmd /k "echo Dies ist ein mehrzeiliger Text,&echo der in einer neuen Instanz der&echo Console angezeigt werden soll...&echo ..Zeile4&echo ..Zeile5&echo ..Zeile6&echo ..usw..."
pause
...die 8191-Zeichen-Beschränkung kann man umgehen, indem man den Text in eine (temporäre) Datei schreibt und diese am begin der neuen Instanz anzeigen lässt:
@echo off
chcp 65001 >nul
rem text in hilfsdatei ausgeben (bevorzugt im Temp-ordner)
@(
echo Dies ist ein mehrzeiliger Text,
echo der in einer neuen Instanz der
echo Console angeteigt werden soll...
echo ..Zeile4
echo ..Zeile5
echo ..Zeile6
echo ..usw...
)>"%temp%\temporaerer.txt"
rem Dateiinhalt mit Type anzeigen...
rem achtung! die % werden durch verdoppeln maskiert, so dass sie erst ni der neuen Instanz ausgewertet werden.
rem (diess spart Platz --in einer Kommandozeile können max 8191 Zeichen übergeben werden--)
start "" cmd /k "type "%%temp%%\temporaerer.txt""
pause
...viele Wege führen nach Rom...
@echo off
chcp 65001 >nul
rem missbrauchen wir doch einfach Powershell's Write-Host für die Ausgabe...
rem Powershell benutzt einen Backtick ` zum maskieren von Formatierungszechen https://ss64.com/ps/syntax-esc.html
rem entsprechend trennt man Zeilen durch `n .
start "" cmd /k "powershell -c Write-Host Dies ist ein mehrzeiliger Text,`nder in einer neuen Instanz der`nConsole angezeigt werden soll...`necho ..usw..."
...letzteres kann man sogar mit Farbe versehen...( https://ss64.com/ps/write-host.html)
rem Write-Host erlaubt eine angabe von Ausgabefarben...
start "" cmd /k "powershell -c Write-Host -f 12 -b 1 Dies ist ein mehrzeiliger Text,`nder in einer neuen Instanz der`nConsole angezeigt werden soll...`necho ..usw..."
...wenn Du richtig Gasgeben möchtest, kannst Du das ganze auch noch mit einem selbst gestalteten Prompt versehen .https://www.gutefrage.net/frage/cmd-mit-batch-datei-oeffnen#answer-347428519
...Kombinieren wir mal mit dem Oben gezeigten:
@echo off
chcp 65001 >nul
rem text in hilfsdatei ausgeben (bevorzugt im Temp-ordner)
@(
echo Dies ist ein mehrzeiliger Text,
echo der in einer neuen Instanz der
echo Console angeteigt werden soll...
echo ..Zeile4
echo ..Zeile5
echo ..Zeile6
echo ..usw...
)>"%temp%\tempo raerer.txt"
start "" cmd /k "prompt $H ???$_ _ (o.O) _$_░░░░░░░░░░░ Häää?&color 6f&title Guckst Du aus der Wäsche - Console Multilineprompt&type "%%temp%%\tempo raerer.txt""
rem für Powerschell hier Kommata mit Backtick maskieren...
start "" cmd /k "prompt $h /\_/\ ...ähm?$_$c o.o $f miau?$_ $g ^^ $l Was soll Kitty machen?:&title Hello Kitty Consmiaulääää :)&color df&powershell -c Write-Host -f 13 -b 15 Miau?`n...ich bin so glücklich`,`ndass Du mich gestartet hast.`nschnurr... "
habe Spaß damit.
PS : biem Gassigehen ist mir eingefallen, das man natürlich auch komplexe Sachen in einer Selbststarter-Batch unterbringen kann...:
@echo off
chcp 65001 >nul
if "%~1"=="-second" goto :secondWindow
if "%~1"=="-3" goto :thirtWindow
rem hier alles was in der ersten Instanz getan werden soll.
rem im einfachsten Fall nur die neue Instanz starten
rem ein selbstaufruf ohne cmd /c ist implizit cmd /k!
start "" "%~f0" -second
rem 3. instanz im fenster der ersten Instanz ausführen
start /b "" "%~f0" -3
rem 1. Intanz beenden
exit /b
:secondWindow
rem hier alles was beim Start der neuen Instanz erfolgen soll.
echo machwas
echo blubbb
for /l %%a in (9,-1,1) do (
echo ... %%a Miniippi...
)
exit /b
:thirtWindow
prompt ¯\_(o.O)_/¯ :
color 6
title Guckst Du
for %%a in ("▀▀█▀▀ █▀▀ █▀▀ ▀▀█▀▀","░░█░░ █▀▀ ▀▀█ ░░█░░","░░▀░░ ▀▀▀ ▀▀▀ ░░▀░░ ") do echo %%~a
rem was sonst noch getan werden soll....