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

vbs leer datei erstellen und Menü erstellen

Mitglied: Noir-m

Noir-m (Level 1) - Jetzt verbinden

25.03.2008, aktualisiert 26.03.2008, 9741 Aufrufe, 5 Kommentare

2 Fragen die ich selbst nicht beantworten kann^^

Hallo leutz ,
Ich beschäftige mich schon seit längerem mit Batch datein , und wollte nun anfangen mit VBScript
bisher ist das einzigste was ich mit vbs kann eine mesagebox auszugeben und zwar mit dem MSGbox befehl ^^
Nun wollt ich ein kleines Menü bauen eher gesagt wieder eine Messagebox bloß mit 5 auswahl möglichkeiten die jeweils was anderes bewirken
oder eher gesagt die immer eine andere Datei erstellen

zb Antwort Möglichkeit 1 erstellt die datei "1.dat"

Batchscript mäßig ist das kein Problem da sähe das wie folgt aus

if Variable==1 goto 1
:1
echo >>1.dat

Ist das in VBS eigentlich möglich und wenn ja wie geht das ?
Mitglied: bastla
25.03.2008 um 23:25 Uhr
Hallo Noir-m und willkommen im Forum!

Bevor ich auf Deine Fragen eingehe, einige Links für den Start:
http://www.microsoft.com/germany/technet/datenbank/articles/600358.mspx ...
http://msdn2.microsoft.com/en-us/library/sx7b3k7y(VS.85).aspx
http://www.microsoft.com/technet/scriptcenter/hubs/start.mspx (dort auch sehr zu empfehlen: die "Hey, Scripting Guy!"-Kolumnen)

http://dieseyer.de/index.htm
und (bei dieseyer.de verlinkt) als Nachschlagewerk in der Offline-Version: http://wsh-vbs.de/scr56de.chm/script56.chm

Wenn Du die zuletzt erwähnte Hilfedatei herunterlädtst und startest, wird Dir bereits auf der ersten Seite ein Link zum "FileSystemObject" angeboten - dort findest Du die grundlegenden Methoden, um mit Textdateien zu arbeiten. Diese wirst Du sehr oft, und natürlich auch für Dein hier geschildertes Vorhaben, benötigen.

Ein Script zu eben diesem Vorhaben könnte so aussehen:
01.
MenueTitel = "Auswahlmenü" 
02.
MenueText = _ 
03.
"1: Erzeuge 1.dat" & vbCrLF & _ 
04.
"2: Erzeuge 2.dat" & vbCrLF & _ 
05.
"3: Erzeuge 3.dat" & vbCrLF & _ 
06.
"4: Erzeuge 4.dat" & vbCrLF & _ 
07.
"5: Erzeuge 5.dat" & vbCrLF & vbCrLF & _ 
08.
"0: Beenden" & vbCrLF & vbCrLF & _ 
09.
"Bitte die Nummer der gewünschten Option eingeben!" 
10.
 
11.
Do 
12.
    Auswahl = InputBox(MenueText, MenueTitel) 
13.
Loop Until Auswahl >="0" And Auswahl <="5" Or Auswahl = "" 
14.
 
15.
If Auswahl = "" Then WScript.Quit 'Abbruch gewählt 
16.
 
17.
Set fso = CreateObject("Scripting.FileSystemObject") 
18.
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
19.
BasisPfad = "D:\MenueTest" 
20.
 
21.
Select Case Auswahl 
22.
Case "0" 
23.
    MsgBox "Script wird beendet." 
24.
    WScript.Quit 
25.
Case "1" 
26.
    DateiPfad = BasisPfad & "\" & "1.txt" 
27.
Case "2" 
28.
    DateiPfad = BasisPfad & "\" & "2.txt" 
29.
Case "3" 
30.
    DateiPfad = BasisPfad & "\" & "3.txt" 
31.
Case "4" 
32.
    DateiPfad = BasisPfad & "\" & "4.txt" 
33.
Case "5" 
34.
    DateiPfad = BasisPfad & "\" & "5.txt" 
35.
Case Else 
36.
    'Eine weitere Möglichkeit kann es in diesem Fall nicht geben, 
37.
	'sollte aber eigentlich immer berücksichtigt werden ... 
38.
End Select 
39.
 
40.
Set Datei = fso.OpenTextFile(DateiPfad, ForAppending, True) 
41.
Datei.WriteLine "ECHO ist eingeschaltet (ON)." 
42.
Datei.Close 
43.
 
44.
MsgBox Dateipfad & " wurde erstellt.", vbInformation, "Datei erstellt"
Eine alternative Umsetzung würde die eingegebene Ziffer gleich direkt für den Dateinamen verwenden und sähe dann so aus:
01.
MenueTitel = "Auswahlmenü" 
02.
MenueText = _ 
03.
"1: Erzeuge 1.dat" & vbCrLF & _ 
04.
"2: Erzeuge 2.dat" & vbCrLF & _ 
05.
"3: Erzeuge 3.dat" & vbCrLF & _ 
06.
"4: Erzeuge 4.dat" & vbCrLF & _ 
07.
"5: Erzeuge 5.dat" & vbCrLF & vbCrLF & _ 
08.
"0: Beenden" & vbCrLF & vbCrLF & _ 
09.
"Bitte die Nummer der gewünschten Option eingeben!" 
10.
 
11.
Do 
12.
    Auswahl = InputBox(MenueText, MenueTitel) 
13.
Loop Until Auswahl >="0" And Auswahl <="5" Or Auswahl = "" 
14.
 
15.
If Auswahl = "" Then WScript.Quit 'Abbruch gewählt 
16.
 
17.
If Auswahl = "0" Then 'Beenden gewählt 
18.
    MsgBox "Script wird beendet." 
19.
    WScript.Quit 
20.
End If 
21.
 
22.
Set fso = CreateObject("Scripting.FileSystemObject") 
23.
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
24.
BasisPfad = "D:\MenueTest" 
25.
DateiPfad = BasisPfad & "\" & Auswahl & ".txt" 
26.
 
27.
Set Datei = fso.OpenTextFile(DateiPfad, ForAppending, True) 
28.
Datei.WriteLine "ECHO ist eingeschaltet (ON)." 
29.
Datei.Close 
30.
 
31.
MsgBox Dateipfad & " wurde erstellt.", vbInformation, "Datei erstellt"
In beiden Fällen wird (abweichend von der skizzierten Batch-Version) die Eingabe kontrolliert und nur akzeptiert, wenn sie aus einer der vorgegebenen Ziffern besteht oder "Abbruch" angeklickt bzw eine leere Eingabe getätigt wurde.

Die weitere Umsetzung bildet (hinsichtlich des Inhaltes der zu erstellenden Datei ) das mit dem Batch zu erzielende (falls dort noch die Schreibweise auf %Variable% geändert würde) Ergebnis nach - daher auch "ForAppend", was ">>" in Batch entspricht.

Noch kurz zu einigen Besonderheiten des dargestellten Codes:
Da VBS zeilenorientiert arbeitet, der Code aber oft durch Aufteilung auf mehrere Zeilen lesbarer wird, können durch "_" am Zeilenende Zeilen miteinander verbunden werden - im Beispiel oben können so alle Menüoptionen in Einzelzeilen dargestellt werden, während für den Interpreter die Zeile eigentlich so aussieht:
01.
MenueText = "1: Erzeuge 1.dat" & vbCrLF & "2: Erzeuge 2.dat" & vbCrLF & "3: Erzeuge 3.dat" & vbCrLF & "4: Erzeuge 4.dat" & vbCrLF & "5: Erzeuge 5.dat" & vbCrLF & vbCrLF & "0: Abbruch" & vbCrLF & vbCrLF & "Bitte die Nummer der gewünschten Option eingeben!"
Mit "&" werden einzelne Textteile verknüpft, und mit der Konstanten "vbCrLF" wird jeweils eine Zeilenschaltung erzwungen.

Kommentare werden mit einem Apostroph (') eingeleitet und können auch am Ende einer Zeile angefügt werden.

"Do" - "Loop" ist ein Schleifenkonstrukt, das hier dazu verwendet wird, eine passende Eingabe zu erzwingen.

Die Eingabe über eine InputBox liefert als Ergebnis immer einen String, daher werden bei der Überprüfung und Auswertung die Ziffern auch nicht als Zahl, sondern als Text behandelt und müssen daher unter Anführungszeichen stehen.

"If" - "Then" kann ein- oder mehrzeilig geschrieben werden - in letzterem Fall ist der Block mit "End If" abzuschließen (analog dazu auch bei der Auswertung über "Select Case").

Für das Erzeugen der Datei wird das schon erwähnte "FileSystemObject" verwendet, wobei der Ordnung halber der Ordner, in welchem die Datei erstellt werden soll, mit vollständigem Pfad vorgegeben wird.

Die abschließende MsgBox wird noch durch ein passendes Symbol (siehe Konstante "vbInformation") ergänzt.

Grüße
bastla
Bitte warten ..
Mitglied: Noir-m
25.03.2008 um 23:46 Uhr
erstmal 1000 dank für deinen sehr ausführlichen Post , ich kann jede Hilfe
bzw jedes Tutorial gebrauchen.

Ich habe auch mal deine "Scripts" bzw die Codes für die Scripts ausgetestet
leider gehen keine von beiden bei mir

Ich bekomme eine Fehlermeldung mit :
"Der Pfad wurde nicht gefunden"

und bei beiden Scripts muss es anscheinend an der Zeile liegen
"Set fso = CreateObject("Scripting.FileSystemObject")"

und ich hätte noch eine Frage
wie ich im Code oder in mehreren Tutorials gesehen habe muss man einen Pfad für die zu erstellende Datei angeben.
Kann man es nicht auch wie bei einer Batch datei machen das die datei im selben ordner wie die Batch datei erstellt wird ?

mfg Noir-m

€dit :
Die fehlermeldung sieht so aus :
http://www.bilderuploaden.de/aihspro2/show.php/4408_bug.PNG.html
Bitte warten ..
Mitglied: bastla
26.03.2008 um 00:13 Uhr
Hallo Noir-m!

Ich bekomme eine Fehlermeldung mit :
"Der Pfad wurde nicht gefunden"
Vermutlich ist der Grund dafür, dass der von mir verwendete Zielordner (BasisPfad) "D:\MenueTest" bei Dir nicht existiert.

wie ich im Code oder in mehreren Tutorials gesehen habe muss man einen Pfad für die zu erstellende Datei angeben.
Kann man es nicht auch wie bei einer Batch datei machen das die datei im selben ordner wie die Batch datei erstellt wird ?
Genau genommen wird auch in Batch die Datei im aktuellen Ordner (und damit nicht unbedingt im Ordner, in welchem die Batchdatei liegt) erzeugt.

Das lässt sich auch in VBS erreichen - dazu müsstest Du ganz einfach nur auf das Angeben des Basispfades verzichten und den Dateipfad etwa so festlegen:
01.
Dateipfad = "1.txt"
Der Rest des Scripts könnte unverändert bleiben.

Falls Du wirklich sicherstellen willst, dass unabhängig von der Art des Aufrufes die Datei im selben Ordner angelegt wird, in dem sich auch das Script befindet, könntest Du den Basispfad so angeben:
01.
BasisPfad = fso.GetParentFolderName(WScript.ScriptFullName) 
02.
If Right(BasisPfad, 1) = "\" Then BasisPfad = Left(BasisPfad, Len(BasisPfad) - 1)
Mit der zweiten Zeile stellst Du sicher, dass auch bei einem Rootordner (zB "D:\") kein "\" am Ende aufscheint (dieser wird erst beim Zusammenfügen des Dateipfades platziert).

Anmerkung dazu: In den allermeisten Fällen ist es allerdings weder in Batch, noch in VBS, ein Problem, innerhalb eines Pfades "\\" anstelle eines einfachen "\" zu schreiben - in VBA, konkret in Excel, hatte ich allerdings bereits Probleme mit einer derartigen Schreibweise und versuche daher zumeist, doppelte "\" zu vermeiden.

Grüße
bastla
Bitte warten ..
Mitglied: Noir-m
26.03.2008 um 00:18 Uhr
Wow vielen vielen Dank
Jetzt klappt das Script 1a :D
komisch nur das es vorher nicht funktioniert hat den ich habe
auch eine Partition D.
Egal hauptsache es funktioniert :D
Vielen vielen dank , Big thx !!! ^^
Bitte warten ..
Mitglied: bastla
26.03.2008 um 00:22 Uhr
Hallo Noir-m!

komisch nur das es vorher nicht funktioniert hat den ich habe
auch eine Partition D.
... aber den Ordner "D:\MenueTest" hattest Du nicht, und ich habe im Script auch nicht versucht, diesen zu erstellen oder zumindest dessen Existenz zu prüfen - insofern meine Schuld (war allerdings auch nur als Skizze gedacht).

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Visual Studio
Simples asp.net menu selbst erstellen
gelöst Frage von Herbrich19Visual Studio22 Kommentare

Hallo, Ich möchte gerne eine eigenes ASP.NET Menü Steuerelement erstellen was einfachen HTML Code rendert. Ich möchte ein HTML5 ...

Batch & Shell
Powershell Drop Down Menü erstellen
Frage von blackhawk17Batch & Shell11 Kommentare

Guten Morgen, ich möchte mir mit Windows Forms gerne ein Powershell Drop Down Menü bauen. Das schaut bei mit ...

Batch & Shell
Geplante Aufgabe erstellen - VBS
gelöst Frage von kontextBatch & Shell9 Kommentare

Hallo Leute, Hallo Programmier-Profis :-) :-D Ich arbeite zur Zeit an einem kleinen VB-Script und bin nun auf eine ...

VB for Applications

VBS Ordner erstellen - wenn nicht vorhanden!

gelöst Frage von freshman2017VB for Applications1 Kommentar

Hallo, ich würde gerne einen Ordner erstellen, wenn dieser nicht vorhanden ist, nachfolgende VBS funktioniert Ich würde jedoch mit ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 12 StundenAusbildung8 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 2 TagenSpeicherkarten2 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 2 TagenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 3 TagenHardware3 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Off Topic
SysAdmin im öffentlichen Dienst - jemand Erfahrungen?
Frage von JohnDorianOff Topic22 Kommentare

Hallo zusammen, hat jemand Erfahrung wie es so ist als SysAdmin im öffentlichen Dienst (Landkreis) im Südwesten der Republik ...

SAN, NAS, DAS
Nas mit USB und LAN gleichzeitig zugreifen
gelöst Frage von MarkBeakerSAN, NAS, DAS16 Kommentare

Hallo zusammen, ich suche eine Art NAS, womit ich via LAN und USB zugreifen kann. Folgender Aufbau ist gedacht: ...

Vmware
Offene LDAP-Server in AS
gelöst Frage von obi-wan-kenobiVmware16 Kommentare

Hallo alle Miteinander, ich habe ein Problem, unsere VM-Ware Appliance (Version. 6.5.0.10000) ist scheinbar angreifbar. Wir haben eben die ...

Entwicklung
Ist dies als Programmieren zu bezeichen?
Frage von kmsw110Entwicklung13 Kommentare

Hallo, ein Kollege redet dauernd darüber das er im Betrieb seine Maschinen (Fräsmaschinen) Programmiert bzw. Zahlenwerte in ein .txt ...