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

MSGBox und .txt

Frage Entwicklung Batch & Shell

Mitglied: charmeur

charmeur (Level 1) - Jetzt verbinden

29.07.2011 um 21:31 Uhr, 4012 Aufrufe, 28 Kommentare

Hallo ihr

ich hätte gerne den inhalt einer txt Datei in eine .bat und zwar sollte der Inhalt der txt datei über eine MSGBox widergegeben werden


mein ansatz würde so lauten

@echo off & setlocal

echo "msgbox type "D:\Eigene Dateien Daten\Desktop\info.txt"|more" ,vbExclamation , "Test"> msg.vbs


msg.vbs

erase msg.vbs

endlocal & exit


aber leider geht das nicht könnte mir jemand bitte helfen
28 Antworten
Mitglied: Berrnd
29.07.2011 um 21:51 Uhr
Hi,

warum nicht alles mittels VBScript? Beispiel:
01.
MsgBox ReadTxtFileIntoString("D:\Eigene Dateien Daten\Desktop\info.txt") 
02.
 
03.
Public Function ReadTxtFileIntoString(ByVal TxtFilePath) 'As String 
04.
	Dim FSO 'As Scripting.FileSystemObject 
05.
	Dim TxtFile 'As File 
06.
	 
07.
	Set FSO = CreateObject("Scripting.FileSystemObject") 
08.
	Set TxtFile = FSO.OpenTextFile(TxtFilePath, 1) 
09.
	 
10.
	ReadTxtFileIntoString = TxtFile.ReadAll 
11.
	 
12.
	TxtFile.Close 
13.
End Function
Gruß - Bernd
Bitte warten ..
Mitglied: Skyemugen
29.07.2011 um 21:52 Uhr
Aloha,

01.
@echo off 
02.
>msg.vbs echo MsgBox "type " ^& Chr(34) ^& "D:\Eigene Dateien Daten\Desktop\info.txt" ^& Chr(34) ^& " |more",vbexclamation,"Test" 
03.
msg.vbs 
04.
del msg.vbs 
05.
goto :eof
greetz André
Bitte warten ..
Mitglied: charmeur
29.07.2011 um 22:03 Uhr
danke für deine antwort
aber leider kommt bei mir nicht der inhalt der txt datei sondern
D:\Eigene Dateien Daten\Desktop\info.txt

habe ich was falsch gemacht ?
Bitte warten ..
Mitglied: Skyemugen
29.07.2011 um 22:09 Uhr
Aloha,

nö, ich habe dein EP falsch interpretiert und mich schon gewundert Freitagabend eben, da überliest man gerne mal den ersten Satz im EP *lach*

edit: Da bastla bereits die mehrzeilige Sache angesprochen hat, hier einfach noch einmal zur möglichen Info für eine einzeilige Textdatei
01.
@echo off 
02.
for /f "usebackq delims=" %%s in ("D:\Eigene Dateien Daten\Desktop\info.txt") do ( 
03.
>msg.vbs echo MsgBox "%%s",vbexclamation,"test" 
04.
05.
msg.vbs 
06.
del msg.vbs 
07.
goto :eof
Das Problem hierbei ist: Das Verwenden von type und more hätte keinen Effekt (darum auch direkte Verwendung durch usebackq), da man nicht einfach so mit dieser Methode Mehrzeiler afaik in die MsgBox übernehmen kann (ohne vbcrlf), korrigiert mich, wenn ich falsch liege.

greetz André
Bitte warten ..
Mitglied: charmeur
29.07.2011 um 22:10 Uhr
nur intersse halber würde das ganze auch über eine txt Datei funktionieren die auf einem Web server liegt
Bitte warten ..
Mitglied: bastla
29.07.2011 um 22:15 Uhr
Hallo @All!

Ausgehend von der Annahme, dass die Textdatei mehr als eine Zeile enthält (enthalten kann) und außerdem auch noch Parameter für die "MsgBox" benötigt werden, würde ich ebenfalls für eine VBS-Lösung plädieren - was aber nicht heißt, dass diese nicht per Batch erstellt werden kann:
01.
@echo off & setlocal 
02.
set "Info=D:\Eigene Dateien Daten\Desktop\info.txt" 
03.
 
04.
set M=%temp%\MsgBox.vbs 
05.
>%M% echo MsgBox CreateObject("Scripting.FileSystemObject").OpenTextFile("%Info%").ReadAll, vbExclamation, "Test" 
06.
%M% 
07.
del %M%
Grüße
bastla

P.S.: "endlocal" wird am Ende eines Batches automatisch ausgeführt, und ein "exit" ohne "/b" ist in den meisten Fällen sinnfrei ...
Bitte warten ..
Mitglied: Berrnd
29.07.2011 um 22:21 Uhr
Zitat von charmeur:
nur intersse halber würde das ganze auch über eine txt Datei funktionieren die auf einem Web server liegt
Hi,

aber klar doch ;). Beispiel:
01.
MsgBox DownloadString("http://www.google.com/robots.txt") 
02.
 
03.
Public Function DownloadString(ByVal URL) 'As String 
04.
	Dim WebReq 'As MsXml2.XmlHttp 
05.
	Dim FSO 'As Scripting.FileSystemObject 
06.
	 
07.
	Set WebReq = CreateObject("MsXml2.XmlHttp.3.0") 
08.
	Set FSO = CreateObject("Scripting.FileSystemObject") 
09.
	 
10.
	WebReq.Open "get", URL, False 
11.
	WebReq.Send 
12.
	 
13.
	DownloadString = WebReq.ResponseText 
14.
End Function
Viele Grüße - Bernd
Bitte warten ..
Mitglied: bastla
29.07.2011 um 22:30 Uhr
@Skyemugen
Da das Endergebnis etwa so aussehen sollte:
MsgBox "Zeile1" & vbCrLf & "Zeile2" & vbCrLf & "Zeile3", vbExclamation, "Test"
ist das per Batch only etwas mühsam - und wenn ja ohnehin ein VB-Script verwendet werden soll ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
29.07.2011 um 22:33 Uhr
Aloha bastla,

darum schrieb ich ja
da man nicht einfach so mit dieser Methode

*gg* dass das möglich ist, war mir klar aber die Umsetzung dazu wollte ich mir zu dieser Stunde auch nicht mehr ausmalen

greetz André
Bitte warten ..
Mitglied: bastla
29.07.2011 um 22:35 Uhr
Hallo Skyemugen!

Einfacher wäre vielleicht folgendes Ergebnis zu erreichen:
01.
MsgBox _ 
02.
"Zeile1" _ 
03.
& vbCrLf _ 
04.
& "Zeile2" _ 
05.
& vbCrLf _ 
06.
& "Zeile3" _ 
07.
, vbExclamation, "Test"
nämlich etwa so:
01.
@echo off & setlocal 
02.
set "Info=D:\Eigene Dateien Daten\Desktop\info.txt" 
03.
 
04.
set M=%temp%\MsgBox.vbs 
05.
>%M% echo MsgBox _ 
06.
 
07.
set /p Zeile1=<"%Info%" 
08.
>>%M% echo "%Zeile1%" _ 
09.
 
10.
for /f "delims=" %%i in ('more +1 "%Info%"') do ( 
11.
    echo ^& vbCrLf _ 
12.
    echo ^& "%%i" _ 
13.
)>>%M% 
14.
 
15.
>>%M% echo , vbExlamation, "Test" 
16.
 
17.
%M% 
18.
del %M%
Sinn hat das aber nicht wirklich ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
29.07.2011 um 22:49 Uhr
Aloha bastla,

och ... jetzt gibst du mir schon 'nen guten Hinweis, wie es einfach umzusetzen wäre, dann drückt man kurz darauf F5 und braucht auch nicht mehr posten, weil der Herr auch gleich die Arbeit abgenommen hat *grml*

Jetzt hatte ich mich extra doch noch einmal rangesetzt ^_^ auch wenn ich es etwas einfacher lösen wollte, was erst in einem Kompilierungsfehler endete, hahaha

greetz André
Bitte warten ..
Mitglied: bastla
29.07.2011 um 22:51 Uhr
Hallo Skyemugen!

Sorry - aber Du könntest ja noch die Berücksichtigung von Leerzeilen einbauen (auch wenn das Ganze unter "L’art pour l’art" fällt) ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
29.07.2011 um 23:14 Uhr
Aloha bastla,

na,wir wollen die ja schließlich nicht unterschlagen
01.
@echo off & setlocal 
02.
set "Info=D:\Eigene Dateien Daten\Desktop\info.txt" 
03.
 
04.
set "M=%temp%\MsgBox.vbs" 
05.
>%M% echo MsgBox _ 
06.
 
07.
set /p Zeile1=<"%Info%" 
08.
>>%M% echo "%Zeile1%" _ 
09.
 
10.
for /f "delims=: tokens=1,2*" %%h in ('more +1 "%Info%" ^|findstr /n "^"') do ( 
11.
	echo ^& vbCrLf _ 
12.
	if "%%i" equ "" (echo ^& " " _) else (echo ^& "%%i" _) 
13.
)>>%M% 
14.
 
15.
>>%M% echo , vbExlamation, "Test" 
16.
 
17.
%M% 
18.
del %M% 
19.
goto :eof
greetz André
Bitte warten ..
Mitglied: charmeur
30.07.2011 um 09:33 Uhr
Zitat von Berrnd:
> Zitat von charmeur:
> ----
> nur intersse halber würde das ganze auch über eine txt Datei funktionieren die auf einem Web server liegt
Hi,

aber klar doch ;). Beispiel:
01.
MsgBox DownloadString("http://www.google.com/robots.txt") 
02.
>  
03.
> Public Function DownloadString(ByVal URL) 'As String 
04.
> 	Dim WebReq 'As MsXml2.XmlHttp 
05.
> 	Dim FSO 'As Scripting.FileSystemObject 
06.
> 	 
07.
> 	Set WebReq = CreateObject("MsXml2.XmlHttp.3.0") 
08.
> 	Set FSO = CreateObject("Scripting.FileSystemObject") 
09.
> 	 
10.
> 	WebReq.Open "get", URL, False 
11.
> 	WebReq.Send 
12.
> 	 
13.
> 	DownloadString = WebReq.ResponseText 
14.
> End Function
Viele Grüße - Bernd


hallo danke für die Antwort, da ja die meisten ein VBScript machen würden würde ich in dem fall das so machen wollen.
nur mein problem ist das ich mit dem nicht wirklich auskenne, das script passt ja genau so wie ich das haben möchte
nur noch eine letze bitte ich würde in diesem script noch gerne ein Programm starten und ausserdem würde ich noch wollen das falls die txt leer ist das keine MSGBox aufgerufen wird wäre das auch machbar?
Bitte warten ..
Mitglied: Berrnd
30.07.2011 um 15:06 Uhr
Hi,

...aber selbstverständlich ist auch das machbar. ;) Beispiel Programm starten:
01.
StartApp "C:\windows\system32\notepad.exe" 
02.
 
03.
Public Sub StartApp(ByVal Path) 
04.
	Dim Shell 'As WScript.Shell 
05.
	 
06.
	Set Shell = CreateObject("WScript.Shell") 
07.
	 
08.
	Shell.Run Path 
09.
End Sub
Beispiel keine MsgBox wenn Textdatei leer:
01.
Dim txt 'As String 
02.
 
03.
txt = ReadTxtFileIntoString("C:\Windows\system.ini") 
04.
 
05.
If Not txt = "" Then 
06.
	MsgBox txt 
07.
End If
Viele Grüße - Bernd
Bitte warten ..
Mitglied: charmeur
30.07.2011 um 16:16 Uhr
Super es geht natürlich aber leide rbin ich nicht in der lage das script zusammen zu fassen

also die txt datei soll auf dem web server überprüft werden ob sie leer ist oder nicht, wenn nicht dann sollte das MSGBox mit dem Inhalt aus der txt datei auf dem Server geöffnet werden übrigens wäre es toll das die datei jedes mal erneut abgefagt wird ob die txt datei leer ist oder nicht
Bitte warten ..
Mitglied: Berrnd
30.07.2011 um 16:29 Uhr
Hi,

...bitteschön:
01.
Dim txt 'As String 
02.
txt = DownloadString("http://www.google.com/robots.txt") 
03.
If Not txt = "" Then 
04.
	MsgBox txt 
05.
End If 
06.
 
07.
Public Function DownloadString(ByVal URL) 'As String 
08.
	Dim WebReq 'As MsXml2.XmlHttp 
09.
	Dim FSO 'As Scripting.FileSystemObject 
10.
	 
11.
	Set WebReq = CreateObject("MsXml2.XmlHttp.3.0") 
12.
	Set FSO = CreateObject("Scripting.FileSystemObject") 
13.
	 
14.
	WebReq.Open "get", URL, False 
15.
	WebReq.Send 
16.
	 
17.
	DownloadString = WebReq.ResponseText 
18.
End Function
Der Richtigkeit halber: Die Textdatei wird nicht vom Server überprüft sondern natürlich heruntergeladen, egal ob leer oder nicht, und dann geprüft. Dies geschieht selbstverständlich bei jedem Aufruf des Scripts erneut.

Viele Grüße - Bernd
Bitte warten ..
Mitglied: charmeur
31.07.2011 um 15:40 Uhr
ok nun habe ich das so weit hier mal mein ansatz

01.
Dim txt 'As String  
02.
txt = DownloadString("http://dyndns.or/medid/web/Script/info.txt")  
03.
 
04.
If Not txt = "" Then  
05.
MsgBox txt  
06.
 
07.
End If  
08.
Public Function DownloadString(ByVal URL) 'As String  
09.
Dim WebReq 'As MsXml2.XmlHttp  
10.
Dim FSO 'As Scripting.FileSystemObject  
11.
Set WebReq = CreateObject("MsXml2.XmlHttp.3.0")  
12.
Set FSO = CreateObject("Scripting.FileSystemObject")  
13.
WebReq.Open "get", URL, False  
14.
WebReq.Send  
15.
DownloadString = WebReq.ResponseText  
16.
End Function 
17.
 
18.
Dim txt1'As String  
19.
 
20.
txt1 = DownloadString("http://dyndns.or/medid/web/Script/Prme.txt")  
21.
If Not txt1 = "" Then  
22.
StartApp txt1 
23.
End If 
24.
 
25.
Public Sub StartApp(ByVal Path)  
26.
Dim Shell 'As WScript.Shell  
27.
Set Shell = CreateObject("WScript.Shell")  
28.
Shell.Run Path  
29.
 
30.
End Sub 
31.
 
32.
 
33.
Dim txt2'As String  
34.
txt2 = DownloadString("http://dyndns.or/medid/web/Script/er.txt")  
35.
If txt = "" Then  
36.
If txt1 = "" Then  
37.
MsgBox txt2 
38.
End If  
39.
End If  
40.
 
frage wie schaffe ich es nun, das noch eine txt datei aufgerufen wird , in dem dann noch ein script steht das ausgeführt wird?

und ncih eine frage kann ich aus einer excel datei eine bestimmte zeile in eine txt datei expotieren?
Bitte warten ..
Mitglied: Berrnd
31.07.2011 um 15:53 Uhr
Hi,

zu deiner ersten Frage: Was meinst du damit genau? Steht in einer txt-Datei ein weiteres VBScript oder eine Batch? Z. B. im Fall von Batch: Bennene die .txt-Datei einfach in eine .bat-Datei um und starte diese dann aus dem ersten VBScript über
01.
StartApp "C:\deinebatch.bat"
Zu deiner zweiten Frage: Da habe ich leider keine Ahnung, ob/wie das mit VBScript geht...

Viele Grüße - Bernd
Bitte warten ..
Mitglied: charmeur
31.07.2011 um 16:28 Uhr
danke für deine hilfe in der datei sollte falls nötig ein weiteres VBScript sein das dann eben ausgeführt wird
Bitte warten ..
Mitglied: Berrnd
31.07.2011 um 16:50 Uhr
Hi,

na dann entsprechend so: ;)
01.
 StartApp "C:\deinvbs.vbs"
Gruß - Bernd
Bitte warten ..
Mitglied: bastla
31.07.2011 um 18:33 Uhr
Hallo charmeur!
und ncih eine frage kann ich aus einer excel datei eine bestimmte zeile in eine txt datei expotieren?
Für das Lesen einer Zelle, im Beispiel A2 der ersten Tabelle, (ungetestet) etwa so:
01.
Set oXL = WScript.CreateObject("EXCEL.application") 
02.
With oXL 
03.
    .Visible = False 
04.
    .Workbooks.Open "D:\Eigene Dateien Daten\Desktop\Excel-Datei.xlsx" 
05.
    txt = .Worksheets(1).Cells(2, "A").Value 
06.
    .ActiveWorkbook.Close False 
07.
    .Application.Quit 
08.
End With
Wenn es tatsächlich eine ganze Zeile sein soll, Zeile 5 in eine passende Schleife packen und in der Variablen "txt" die Werte (passend - wie, weißt ja bisher nur Du) zusammenfassen - danach in die Textdatei schreiben ...

Grüße
bastla

P.S.: Vom eigentlichen Thema des Threads sind wir aber jetzt schon einigermaßen weit entfernt ...
Bitte warten ..
Mitglied: charmeur
31.07.2011 um 22:12 Uhr
hallo erst noch einmal danke für die hilfe ich hätte da noch eine kleine frage danach werde ich das ganze hier dann auch zu ende bringen und zwar

habe ich folgendes
01.
Dim txt 'As String  
02.
 
03.
 
04.
Set oXL = WScript.CreateObject("EXCEL.application")  
05.
With oXL  
06.
    .Visible = False  
07.
    .Workbooks.Open "D:\Eigene Dateien Daten\Desktop\1.xlsx"  
08.
  txt = .Worksheets(1).Range("A2", Selection.End(xlToRight)).Select 
09.
    .ActiveWorkbook.Close False  
10.
    .Application.Quit  
11.
End With 
12.
MsgBox txt 

ich würde gerne haben wollen das die letzte beschriebene zelle angezeigt wird aber leider geht das wie so oft nicht
txt = .Worksheets(1).Range("A2", Selection.End(xlToRight)).Select
Bitte warten ..
Mitglied: bastla
31.07.2011 um 22:21 Uhr
Hallo charmeur!

Darf ich Dich einladen, so wie alle anderen hier, Code-Formatierung zu benutzen (kann auch problemlos im Nachhinein hinzugefügt werden)?
Was Du vermutlich haben möchtest, wäre
txt = .Worksheets(1).Range("A2").End(xlToRight).Value
BTW: Wenn Du schon Variablen (mit "Dim") deklarierst, dann aber konsequent für alle (also auch für "oXL") - und dazu wäre auch noch ein "Option Explicit" vorweg sinnvoll ...

Grüße
bastla
Bitte warten ..
Mitglied: charmeur
31.07.2011 um 22:41 Uhr
danke .. und sorry wegen dem code

leider bekomme ich bei deinem code einen laufzeitfehler
Bitte warten ..
Mitglied: bastla
31.07.2011 um 22:44 Uhr
Hallo charmeur!
leider bekomme ich bei deinem code einen laufzeitfehler
Einen bestimmten?

Eigentlich sollte aber sogar bei einer gänzlich leeren Zeile einfach nur ein Leerstring als Ergebnis geliefert werden ...

Grüße
bastla

P.S.: Danke für die Formatierung
Bitte warten ..
Mitglied: charmeur
31.07.2011 um 22:53 Uhr
ich habe das hier nn im script
01.
Dim txt 'As String 
02.
 
03.
 
04.
Set oXL = WScript.CreateObject("EXCEL.application") 
05.
With oXL 
06.
.Visible = False 
07.
.Workbooks.Open "D:\Eigene Dateien Daten\Desktop\1.xlsx" 
08.
 
09.
txt = .Worksheets(1).Range("A2").End(xlToRight).Value 
10.
.ActiveWorkbook.Close False 
11.
.Application.Quit 
12.
End With 
13.
MsgBox txt 
und der fehler lautet
800A03EC
Bitte warten ..
Mitglied: bastla
31.07.2011 um 22:57 Uhr
Hallo charmeur!

Sorry - kann ja natürlich nicht funktionieren, da VBS keine Excel-Konstanten kennt - daher
01.
Const xlToRight = -4161
vorweg hinzufügen ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Webentwicklung
gelöst HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Entwicklung
gelöst Get ip from external txt file and use in vbscript (5)

Frage von thankusomuch zum Thema Entwicklung ...

Batch & Shell
gelöst Textdateien TXT in allen Verzeichnissen suchen und zusammenfassen (19)

Frage von chgs2011 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...