Mit msg mehrere Zeilen angeben?
Hallo,
Ich wollte durch eine Batch-Datei ein Fenster erscheinen lassen, bei dem man mit Ok bestätigen muss.
Also mit msg * "Das ist ein Beispiel"
Doch als ich versucht habe die Nachricht über mehr als eine Zeile zu schreiben hat es nicht mehr funktioniert.
msg * "Dies ist ein weiteres
Beispiel"
Ist ja eigentlich logisch, dass das in einer Batch nicht funktioniert. Aber kann man das auf irgendeine andere Art und Weiße lösen?
Ich würde mich sehr über ein wenig Hilfe freuen.
Gruß racer23
Ich wollte durch eine Batch-Datei ein Fenster erscheinen lassen, bei dem man mit Ok bestätigen muss.
Also mit msg * "Das ist ein Beispiel"
Doch als ich versucht habe die Nachricht über mehr als eine Zeile zu schreiben hat es nicht mehr funktioniert.
msg * "Dies ist ein weiteres
Beispiel"
Ist ja eigentlich logisch, dass das in einer Batch nicht funktioniert. Aber kann man das auf irgendeine andere Art und Weiße lösen?
Ich würde mich sehr über ein wenig Hilfe freuen.
Gruß racer23
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 132838
Url: https://administrator.de/forum/mit-msg-mehrere-zeilen-angeben-132838.html
Ausgedruckt am: 08.04.2025 um 18:04 Uhr
17 Kommentare
Neuester Kommentar
Hallo racer23!
Grüße
bastla
Der Beitrag ist zwar schon als gelöst markiert, (Kann man das eigentlich wieder rückgängig machen?)
Ja (editieren).wie man die Beschriftung im Rahmen des Fensters ändern kann.
... kann ich Dir leider nicht sagen (wobei ich bezweifle, dass es überhaupt möglich ist). Als Alternative käme ein (vom Batch erstelltes) VBScript in Frage, etwa:@echo off & setlocal
set "Titel=Fenstertitel"
set "Zeile1=Dies ist ein weiteres"
set "Zeile2=Beispiel."
set M=%temp%\MsgBox.vbs
>%M% echo MsgBox "%Zeile1%" ^& vbCrLf ^& "%Zeile2%", vbOKOnly, "%Titel%"
cscript //nologo %M%
del %M%
bastla
Hallo racer23!
Im Zweifelsfall aus dem "
@rubberman
Dein Vorschlag bringt mehr Sicherheit, obwohl: Der %temp%-Pfad enthält defaultmäßig (bis zu XP) ohnehin Leerzeichen, wird aber vom System auf Kurznamen reduziert - deshalb spare ich dafür grundsätzlich die Anführungszeichen ein ...
Grüße
bastla
dein Code läuft bei mir nicht.
... ist als Fehlerbeschreibung leider etwas dürftig.Im Zweifelsfall aus dem "
echo off
" ein "echo on
" machen und direkt in der CMD-Shell testen (oder am Ende eine Zeile mit "pause
" anfügen) - dann siehst Du den Ablauf und kannst hoffentlich genauer erkennen, woran's liegt - "Tippfehler oder Ähnliches" kann ich in diesem Fall (nicht zuletzt aufgrund rubbermans Bestätigung) nämlich ausschließen ... @rubberman
Dein Vorschlag bringt mehr Sicherheit, obwohl: Der %temp%-Pfad enthält defaultmäßig (bis zu XP) ohnehin Leerzeichen, wird aber vom System auf Kurznamen reduziert - deshalb spare ich dafür grundsätzlich die Anführungszeichen ein ...
Grüße
bastla
Hallo racer23!
Wenn's dynamisch sein soll, ließe sich das Ganze (zugegeben: nicht ganz ernst gemeint
) auch noch so realisieren:
Grüße
bastla
Wenn's dynamisch sein soll, ließe sich das Ganze (zugegeben: nicht ganz ernst gemeint
@echo off & setlocal
set "Titel=Fenstertitel"
set "Zeile1=Noch ein"
set "Zeile2=weiteres"
set "Zeile3=Beispiel -"
set "Zeile4=dieses Mal"
set "Zeile5=sogar mit"
set "Zeile6=6 Zeilen!"
set M=%temp%\MsgBox.vbs
>%M% echo MsgBox _
set /a Nr=1 & set "CrLF="
:Loop
if not defined Zeile%Nr% goto :Weiter
call set "Z=%%Zeile%Nr%%%"
>>%M% echo %CrLf%"%Z%" ^& ^_
set "CrLf=vbCrLF ^& "
set /a Nr+=1
goto :Loop
:Weiter
>>%M% echo "", vbOKOnly, "%Titel%"
cscript //nologo %M%
del %M%
bastla
Hallo racer23!
Anders formuliert: Wenn der auszugebende Text (bzw zumindest dessen Zeilenanzahl) schon feststeht, ist die Version 1 einfacher, schlanker, direkter (such es Dir aus
) ...
Grüße
bastla
... was davon ist jetzt eigentlich ratsamer?
Die zweite Version ist vergleichsweise aufwändig - ihr einziger Vorteil wäre, dass die Zeilenanzahl dynamisch sein kann, da alle %Zeile#%-Variablen mit unmittelbar aufeinander folgenden Nummern # mit einbezogen werden - das ließe sich auch zB (mit einer kleinen Abwandlung) nutzen, um in einer "for
"-Schleife ermittelte Werte in eine solche Ausgabe zu packen.Anders formuliert: Wenn der auszugebende Text (bzw zumindest dessen Zeilenanzahl) schon feststeht, ist die Version 1 einfacher, schlanker, direkter (such es Dir aus
... was den befehl "set" betrifft. Oder die ganzen Prozentzeichen.
kannst Du zunächst mit "set /?
" die Onlinehilfe aufrufen; hinsichtlich der Prozentzeichen gibt es ähnliches Beispiel (mit etwas Erklärung dazu) hier.Grüße
bastla
Hallo racer23!

Grüße
bastla
Hätte man anstatt der Variablen M, Zeile1 oder Titel eigentlich auch etwas anderes schreiben können, oder sind die so für die Message-Box festgelegt?
Das sind Batch-Variablen und deren Namen können (fast) frei gewählt werden. Die MessageBox wird über VBScript realisiert, und erhält, wie Du ja schon herausgefunden hast, als auszugebende Daten bereits die Inhalte der Variablen - insofern haben die Variablennamen dafür überhaupt keine Bedeutung.Und ich nehme an das vbCrLf und vbOKOnly Befehle vür VBScripte sind.
Fast - genau genommen sind es "benannte Konstante"; Du könntest daher zB anstelle von "vbOKOnly" auch einfach den zugeordneten Wert "0" schreiben - lesbarer ist allerdings die Version mit "vbOKOnly" (womit übrigens festgelegt wird, dass in der MessageBox nur eine Schaltfläche "OK" angeboten wird).Wobei das Zeichen " ^ " vor dem "&" hier nicht mehr zu sehen ist.
Da in CMD mit "&" Befehle in einer Zeile verknüpft werden, muss dieses durch das vorangestellte "^" "maskiert" werden - damit wird der CMD-Interpreter informiert, dass er in diesem Fall dieses Zeichen eben nicht als Anweisung "interpretieren", sondern es einfach unverändert ausgeben soll. Auch für die Zeichen "<", "|" und ">" wäre diese Schreibweise erforderlich.Kennst du vielleicht ne gute Anleitung für VBS?
Anfangen könntest Du zB hier ...Ich hoffe das sind nicht zu viele Fragen auf einmal
War gerade noch zu schaffen ... Grüße
bastla