Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mit msg mehrere Zeilen angeben?

Frage Entwicklung Batch & Shell

Mitglied: racer23

racer23 (Level 1) - Jetzt verbinden

06.01.2010, aktualisiert 18.10.2012, 10334 Aufrufe, 17 Kommentare

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
Mitglied: bastla
06.01.2010 um 21:45 Uhr
Hallo racer23!

Erstelle eine (mehrzeilige) Textdatei (im Beispiel "msg.txt") und verwende folgende Schreibweise:
<msg.txt msg *
Grüße
bastla

P.S.: Wenn Du Deine Codeschnipsel auch schöner formatiert posten möchtest: http://www.administrator.de/helpsystem/detail.php?idx=20#toc27
Bitte warten ..
Mitglied: racer23
06.01.2010 um 22:07 Uhr
Ok, vielen dank.

Es hat funktioniert.
Und deinen kleinen Tipp werde ich absofort berücksichtigen.

Oh, ich habe noch was vergessen. Der Beitrag ist zwar schon als gelöst markiert, (Kann man das eigentlich wieder rückgängig machen?)
aber ich habe mich auch gefragt wie man die Beschriftung im Rahmen des Fensters ändern kann.
Dort wird ja immer nur "Nachricht von Benutzer 06.01.2010 22:21" angezeigt.

Gruß

racer23
Bitte warten ..
Mitglied: bastla
06.01.2010 um 22:36 Uhr
Hallo racer23!
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:
01.
@echo off & setlocal 
02.
set "Titel=Fenstertitel" 
03.
set "Zeile1=Dies ist ein weiteres" 
04.
set "Zeile2=Beispiel." 
05.
 
06.
set M=%temp%\MsgBox.vbs 
07.
>%M% echo MsgBox "%Zeile1%" ^& vbCrLf ^& "%Zeile2%", vbOKOnly, "%Titel%" 
08.
cscript //nologo %M% 
09.
del %M%
Grüße
bastla
Bitte warten ..
Mitglied: racer23
06.01.2010 um 23:04 Uhr
Hi bastla (und danke für deine superschnellen Antworten : )

Also ich habe es ausprobiert, aber dein Code läuft bei mir nicht.
Du kannst ja noch mal ein Blick drüber werfen, vielleicht hast du ein Tippfehler oder Ähnliches drin. Kann ja selbst den Besten mal passieren.
Ich habe mein Batch natürlich auch nochmal überprüft.
Bitte warten ..
Mitglied: rubberman
06.01.2010 um 23:30 Uhr
Hallo racer23 und bastla.

Bei mir funktioniert das hervorragend. Möglich wäre, dass der Pfad in %temp% bei dir Leerzeichen enthält. Probier mal mit geänderter Zeile 6:
01.
set M="%temp%\MsgBox.vbs"
Grüße
rubberman
Bitte warten ..
Mitglied: bastla
07.01.2010 um 21:27 Uhr
Hallo racer23!
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
Bitte warten ..
Mitglied: racer23
08.01.2010 um 12:36 Uhr
Hi bastla

... ist als Fehlerbeschreibung leider etwas dürftig.

Was hätte ich denn da groß schreiben können?
Oder hast du vielleicht das da gemeint: (das war nämlich alles was dabei herauskam)
01.
Der Befehl ""Fenstertitel"" ist entweder falsch geschrieben oder 
02.
konnte nicht gefunden werden. 
03.
C:\Users\Simon\AppData\Local\Temp\MsgBox.vbs(1, 65) Kompilierungsfehler in Micro 
04.
soft VBScript: Syntaxfehler
Aber ich versuchs jetzt mal mit rubberman's Tipp.

Ok, dabei kommt die selbe Fehlermeldung, aber trotzdem danke für deine Mühe rubberman.
Kann es sein, dass es vielleicht etwas mit meinem Betriebssystem zu tun hat (Windows 7)?
Schließlich laufen ja nicht alle Befehle auf jedem Windows.

Gruß
racer23
Bitte warten ..
Mitglied: bastla
08.01.2010 um 14:54 Uhr
Hallo racer23!

Unter W7 habe ich's nicht getestet und kann daher nix dazu sagen ...

Da Du oben schreibst "Ich habe mein Batch natürlich auch nochmal überprüft.": Hast Du den Code nicht kopiert, sondern selbst eingegeben (und falls ja, magst Du ihn posten)?

Grüße
bastla
Bitte warten ..
Mitglied: racer23
08.01.2010 um 21:31 Uhr
Hallo bastla,

Man konnte es wie du schon sagst, aus meinem Komentar wahrscheinlich schlecht rauslesen, aber ich habe ihn kopiert.
Hier aber trotzdem der Code:
01.
@echo off & setlocal 
02.
set "Titel=Fenstertitel" 
03.
set "Zeile1=Dies ist ein weiteres" 
04.
set "Zeile2=Beispiel." 
05.
 
06.
set M=%temp%\MsgBox.vbs 
07.
>%M% echo MsgBox "%Zeile1%" ^& vbCrLf ^& "%Zeile2%", vbOKOnly, 
08.
"%Titel%" 
09.
cscript //nologo %M% 
10.
del %M%
Die ganzen Angaben wie "Fenstertitel, Dies ist [...] Beispiel" habe ich erstmal so gelassen, ist ja vorerst noch egal.

Gruß
racer23
Bitte warten ..
Mitglied: bastla
08.01.2010 um 21:37 Uhr
Hallo racer23!

Die Zeile 7 hat bei Dir einen Umbruch und sollte eigentlich so aussehen:
>%M% echo MsgBox "%Zeile1%" ^& vbCrLf ^& "%Zeile2%", vbOKOnly, "%Titel%"
Grüße
bastla
Bitte warten ..
Mitglied: racer23
08.01.2010 um 22:14 Uhr
Ja jetzt funktioniert's.

Aber in Zeile 7 werden doch nur die Zeilen 1 und 2 erwähnt. Wie sieht das ganze eigentlich aus,
wenn es mehr als zwei Zeilen sein sollen?

Wäre das hier möglich?
01.
>%M% echo MsgBox "%Zeile1%" ^& vbCrLf ^& "%Zeile2%" ^& vbCrLf ^& "%Zeile3%", vbOKOnly, "%Titel%"
und danke nochmal

Gruß
racer23

Ich glaube ich könnte mich ab und zu selbst mal ein wenig anstrengen und es, wie in diesem Fall vorher erst mal ausprobieren,
bevor ich die Fragen stelle.
Es läuft nämlich schon.

Hat sich also alles von selbst erledigt.
Bitte warten ..
Mitglied: bastla
08.01.2010 um 23:24 Uhr
Hallo racer23!

Wenn's dynamisch sein soll, ließe sich das Ganze (zugegeben: nicht ganz ernst gemeint ) auch noch so realisieren:
01.
@echo off & setlocal 
02.
set "Titel=Fenstertitel" 
03.
set "Zeile1=Noch ein" 
04.
set "Zeile2=weiteres" 
05.
set "Zeile3=Beispiel -" 
06.
set "Zeile4=dieses Mal" 
07.
set "Zeile5=sogar mit" 
08.
set "Zeile6=6 Zeilen!" 
09.
 
10.
set M=%temp%\MsgBox.vbs 
11.
>%M% echo MsgBox _ 
12.
set /a Nr=1 & set "CrLF=" 
13.
:Loop 
14.
if not defined Zeile%Nr% goto :Weiter 
15.
call set "Z=%%Zeile%Nr%%%" 
16.
>>%M% echo %CrLf%"%Z%" ^& ^_ 
17.
set "CrLf=vbCrLF ^& " 
18.
set /a Nr+=1 
19.
goto :Loop 
20.
:Weiter 
21.
>>%M% echo "", vbOKOnly, "%Titel%" 
22.
cscript //nologo %M% 
23.
del %M%
Grüße
bastla
Bitte warten ..
Mitglied: racer23
09.01.2010 um 00:05 Uhr
Hi bastla,

Das läuft auch, was davon ist jetzt eigentlich ratsamer? Du meintest ja dass die zweite Version nicht ganz ernst zu nehmen sei.
Ich kann das aber selbst nicht so gut beurteilen. Denn ich kenn mich noch nicht gut genug aus,
gerade was den befehl "set" betrifft. Oder die ganzen Prozentzeichen.
Ich hab das einfach alles kopiert, aber verstanden habe ich es nur sehr grob.
Schließlich bin ich noch Anfänger, was die ganze Programmiererei angeht.

Natürlich erwarte ich nicht, dass du mir jetzt nach diesem Kommentar eine Anleitung schreibst.
(Wollte das nur mal klarstellen, nicht dass du denkst ich verstehe das auch alles.)

Und vielen dank noch mal

Gruß racer23
Bitte warten ..
Mitglied: bastla
09.01.2010, aktualisiert 18.10.2012
Hallo racer23!
... 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
Bitte warten ..
Mitglied: racer23
09.01.2010 um 15:40 Uhr
Hi bastla

01.
set M="%temp%\MsgBox.vbs" 
02.
>%M% echo MsgBox "%Zeile1%" ^& vbCrLf ^& "%Zeile2%", vbOKOnly, "%Titel%"
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?

Also ich denke was %Beispiel% im einzelnen bedeutet, weiß ich jetzt. Und was die zweite Zeile hier angeht denke ich, wird durch den Befehl >%M% alles darauf
folgende in die MsgBo.vbs geschrieben.
Und das hier kommt dann dabei heraus. (Ich habe es aus der MsgBox.vbs herauskopiert)
01.
MsgBox "Dies ist ein weiteres" & vbCrLf & "Beispiel.", vbOKOnly, "Fenstertitel"
Wobei das Zeichen " ^ " vor dem "&" hier nicht mehr zu sehen ist. Deshalb würde ich gerne wissen was das in der oben dargestellten zweiten Zeile zu bedeuten hat?
Und ich nehme an das vbCrLf und vbOKOnly Befehle vür VBScripte sind.
Kennst du vielleicht ne gute Anleitung für VBS?

Ich glaube ich könnte mich ab und zu selbst mal ein wenig anstrengen und es, wie in diesem Fall vorher erst mal ausprobieren,
bevor ich die Fragen stelle.
Denn auch hier könnte ich vor auch mal selbst etwas googeln.

Ich hoffe das sind nicht zu viele Fragen auf einmal

Gruß
racer23
Bitte warten ..
Mitglied: bastla
09.01.2010 um 20:47 Uhr
Hallo racer23!
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
Bitte warten ..
Mitglied: racer23
13.01.2010 um 19:59 Uhr
Hi bastla,

Also vielen dank noch mal für deine große Mühe und Hilfe,
Ich denke das war's jetzt erstmal für diesen Beitrag.
Wenn ich weitere Fragen habe melde ich mich in einem neuen Thema.

Viele Grüße

racer23
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
LAN, WAN, Wireless
Mehrere Hardware Firewalls (10)

Frage von cerberus90 zum Thema LAN, WAN, Wireless ...

VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

VB for Applications
gelöst Mehrere Charts per VBA erstellen lassen, Titel wird nicht angezeigt

Frage von Aximand zum Thema VB for Applications ...

Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...