Top-Themen

Aktuelle Themen (A bis Z)

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, 11033 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 ..
Ähnliche Inhalte
Batch & Shell
Mehrere Verzeichnisse in einen Script angeben
gelöst Frage von KnuefiBatch & Shell17 Kommentare

Hallo zusammen, ich brauche eure Hilfe. Ich habe unten stehendes Script zum löschen ältere Dateien in einen Unterordner. Nun ...

Batch & Shell
In Batch mehrere Zeilen auslesen ?!?
gelöst Frage von JanInfoHDBatch & Shell2 Kommentare

Ich habe in Programm in Batch geschrieben, doch es ließt aus einer .txt-Datei immer nur die erste Zeile, Was ...

Microsoft Office
Excel - Daten aus einer Zeile in mehrere Zeilen aufteilen
gelöst Frage von ovu-p86Microsoft Office4 Kommentare

Hallo, Folgendes bekomme ich nicht gelöst: Muss eine Excel-Tabelle in eine andere Form übertragen. Arbeite mit Excel 2k. Die ...

Apache Server
SMTP im Bugzilla 5 angeben
gelöst Frage von D1Ck3nApache Server3 Kommentare

Hallo zusammen, ich habe mir, auf meiner Ubuntu 14.04 Maschine, die neueste Version von Bugzilla (5.0.2) aufgesetzt und versuche ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless8 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows 10
Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App
Tipp von kgbornWindows 107 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...