goeswith Geschrieben 18. Januar 2008 Geschrieben 18. Januar 2008 Hallo zusammen, Ich muss für eine Prüfung ein Projekt realisieren und dort wollte ich eine IF Abfrage machen, wenn dies nicht zutrifft sollte es die Inputbox wieder holen. Doch irgendwie komm ich nicht auf den grünen Zweig. Kann mir jemand helfen? Mein Script: ' Freie Projektarbeit ' Man muss ein ausgewähltes Projekt realisieren. Es handelt sich hier um eine Einzelarbeit, die benotet wird. ' Für das Projekt muss man folgende Punkte beachten: ' Benutzerführung - Der Benutzer sollte optimal durch das Skript geführt werden. Dazu sollte man Statusmeldungen verwenden. ' Fehlersicherheit - Das Skript sollte auch bei fehlerhaften Eingaben seitens des Benutzers nicht einfach den Geist augeben. ' Dazu sind die jeweiligen Eingaben zu überprüfen. ' Funktionalität - Man sollte mit kleinen Tests die Fuinktionalität unter Beweis stellen. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '1.Abschnitt 'Eingabe der Anzahl der gewünschten Dateien: 'Hier wird die Eingabe von der InputBox verwendet, um zu überprüfen ob die Eingabe numerisch ist. 'Wenn nicht wird der Vorgang wiederholt, d.h 'die InputBox wird wieder aufgerufen und es wird eine Fehlermeldung ausgegeben. 'Ist die Eingabe numerisch wird sie in den Datentyp CByte (0-255) umgewandelt und es geht zum 2.Abschnitt. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim objApp Set objApp = WScript.CreateObject("Scripting.filesystemobject") Dim EingabeAnzahl EingabeAnzahl = InputBox("Geben Sie die Anzahl der gewünschten Dateien ein. Maximal 255") If IsNumeric(EingabeAnzahl) Then MsgBox ("Ihre Eingabe: " & EingabeAnzahl) Else MsgBox ("Ihre Eingabe ist falsch: " & EingabeAnzahl) 'Repeat EingabeAnzahl End If EingabeAnzahl = CByte(EingabeAnzahl) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '2.Abschnitt 'Eingabe des gewünschten Verzeichnis, wo die Dateien erstellt werden sollen: 'Hier wird die Eingabe von der InputBox verwendet, um zu überprüfen ob das Verzeichnis überhaupt exisitiert. 'Wenn nicht wird der Vorgang wiederholt, d.h 'die InputBox wird wieder aufgerufen und es wird eine Fehlermeldung ausgegeben. 'Exisitert das Verzeichnis geht es weiter zum 3. Abschnitt. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Do Until folderexists(EingabeVerzeichnis) Dim EingabeVerzeichnis EingabeVerzeichnis = InputBox("Geben Sie das gewünschte Verzeichnis ein."&vbcrlf&" Beispiel: C:\Testreihe\Test1") MsgBox ("Ihre Eingabe: " & EingabeVerzeichnis) Dim VerzeichnisExistenzpruefung Set VerzeichnisExistenzpruefung = CreateObject("Scripting.FileSystemObject") If VerzeichnisExistenzpruefung.folderexists(""&EingabeVerzeichnis&"") then MSGBOX("Verzeichnis existiert") Else MSGBOX ("Verzeichnis ist nicht vorhanden!") ' Repeat EingabeVerzeichnis End If 'Loop ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '3.Abschnitt 'Erstellung der Anzahl gewünschten Dateien: 'Hier wird die Information (Anzahl gewünschte Dateien) aus dem 1. Abschnitt genommen und so verwendet, dass genau soviele 'Dateien erstellt werden bis die Zahl vom 1. Abschnitt (Anzahl gewünschte Dateien) erreicht worden ist. 'Wenn die Datei schon exisitiert wird die Meldung "File x.txt exisitert schon! File wird überschrieben! 'Klicken Sie auf Abbrechen, um den Vorgang abzubrechen" ausgeben. 'Dabei kann man 'Dazu wird noch jeweils das Datum und die Uhrzeit eingetragen. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim Zaehler Zaehler = 1 Do While Zaehler < EingabeAnzahl + 1 Set DateiExistenzpruefung = CreateObject("Scripting.FileSystemObject") If DateiExistenzpruefung.fileExists("test"&Zaehler&".txt") then MSGBOX ("File test"&Zaehler&".txt existiert schon! File wird überschrieben! Klicken Sie auf Abbrechen, um den Vorgang abzubrechen"), vbOKCancel If vbCancel Then MsgBox("Der Vorgang wird abgebrochen.") WScript.Quit End If End If Set logbuch =objApp.opentextfile(""&EingabeVerzeichnis&"\test"&Zaehler&".txt", 8, true,0) logbuch.writeline Now logbuch.close Zaehler = Zaehler + 1 Loop ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '4.Abschnitt 'Ausgabe "Erfolreiche Durchführung": 'Hier wird noch folgende Ausgabe als Beendung gemacht... '"Es wurden erfolgreich x Dateien im Verzeichnis C:/Beispiel erstellt." ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' MsgBox("Es wurden erfolgreich "&EingabeAnzahl&" Dateien im Verzeichnis "&EingabeVerzeichnis&" erstellt.") ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Zitieren
flashpixx Geschrieben 18. Januar 2008 Geschrieben 18. Januar 2008 Hallo, hier mal Pseudocode: int x = -1 while (x < 0) x = showinputbox("Bitte geben sie eine Zahl größer null ein") end while HTH Phil Zitieren
Keo Geschrieben 18. Januar 2008 Geschrieben 18. Januar 2008 Hallo, ich hoffe mal du meinst es so: Dim EingabeAnzahl Dim AnzahlOK do EingabeAnzahl = InputBox("Geben Sie die Anzahl der gewünschten Dateien ein. Maximal 255") if IsNumeric(EingabeAnzahl) and EingabeAnzahl<256 and EingabeAnzahl>0 then AnzahlOK=true if AnzahlOK<>true then MsgBox ("Ihre Eingabe ist falsch: " & EingabeAnzahl) loop until AnzahlOK MsgBox ("Ihre Eingabe: " & EingabeAnzahl) EingabeAnzahl = CByte(EingabeAnzahl) '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' ' '2.Abschnitt 'Eingabe des gewünschten Verzeichnis, wo die Dateien erstellt werden sollen: 'Hier wird die Eingabe von der InputBox verwendet, um zu überprüfen ob das Verzeichnis überhaupt exisitiert. 'Wenn nicht wird der Vorgang wiederholt, d.h 'die InputBox wird wieder aufgerufen und es wird eine Fehlermeldung ausgegeben. 'Exisitert das Verzeichnis geht es weiter zum 3. Abschnitt. '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''' ' Dim EingabeVerzeichnis Dim VerzeichnisExistenzpruefung Set VerzeichnisExistenzpruefung = CreateObject("Scripting.FileSystemObject") do EingabeVerzeichnis = InputBox("Geben Sie das gewünschte Verzeichnis ein."&vbcrlf&" Beispiel: C:\Testreihe\Test1") MsgBox ("Ihre Eingabe: " & EingabeVerzeichnis) VerzeichnisOK=VerzeichnisExistenzpruefung.folderexists(""&EingabeVerzeichnis&"") if VerzeichnisOK<>true then MSGBOX ("Verzeichnis ist nicht vorhanden!") loop until VerzeichnisOK=true or EingabeVerzeichnis = "" if EingabeVerzeichnis = "" then msgbox "Keinen Pfad angegeben. Abbruch.":wscript.quit MSGBOX("Verzeichnis existiert") Habe es noch ein wenig (sinnvoll) erweitert Zitieren
goeswith Geschrieben 18. Januar 2008 Autor Geschrieben 18. Januar 2008 hey, danke vielmals. super Lösung. evtl kannst du mir auch noch helfen: also, ich hätte im ersten abschnitt noch gerne, dass wenn man in die inputbox eine nicht numerische zahl eingibt, dass auch wieder die inputbox kommt bis man eine nummerische zahl eingegeben hat. und nochmals danke Zitieren
Keo Geschrieben 18. Januar 2008 Geschrieben 18. Januar 2008 Genau das, macht doch der Anfangsteil bis zum Abschnitt 2? Hab nur die Kommentare von Abschnitt 1 entfernt. Zitieren
goeswith Geschrieben 18. Januar 2008 Autor Geschrieben 18. Januar 2008 Ja, ich habe den Code nochmals studiert. Doch beim Testen bzw. wenn man in die Inputbox "Buchstaben" eingibt, kommt eine Fehlermeldung. so auch wenn sie leer ist. Zitieren
Keo Geschrieben 18. Januar 2008 Geschrieben 18. Januar 2008 if IsNumeric(EingabeAnzahl) then if EingabeAnzahl<256 and EingabeAnzahl>0 then AnzahlOK=true end if Einfach die If ein bisschen ausbauen. :floet: Zitieren
goeswith Geschrieben 20. Januar 2008 Autor Geschrieben 20. Januar 2008 Danke..habe es übersehen.. Ich habe jetzt nochmals das Script getestet und habe folgende Probleme: 1.Abschnitt o Wenn man bei der InputBox auf Abbrechen geht, geht dass nicht. 2.Abschnitt o Wenn man einen Buchstaben, eine Zahl oder einen falschen Pfad eingibt wird der Loop gemacht, doch ohne Fehlermeldung. Bsp. "Pfad existiert nicht" Wenn die Eingabe "" (leer) ist, funktioniert es. o Wenn man bei der InputBox auf Abbrechen geht, geht dass nicht. o Mir ist in den Sinn gekommen, dass man am besten noch eine Speicherplatzabfrage macht. Wenn der Speicherplatz vom angegebenen Verzeichnis im Abschnitt 2 zu klein ist, sollte das Script abgebrochen werden. 3. Abschnitt o Bei der Meldung "File test"&Zaehler&".txt existiert schon! File wird überschrieben! Klicken Sie auf Abbrechen, um den Vorgang abzubrechen" , wir beim auf OK klicken auch abgebrochen. Kannst du mir nochmals helfen? Bin leider nicht das super Hirn im scripting. Zitieren
Keo Geschrieben 21. Januar 2008 Geschrieben 21. Januar 2008 Da es sich um Kleinigkeiten handelt, möchte ich mal nicht so sein Du solltest dir aber auf jeden Fall mal ein wenig VBS anschauen... '1. Abschnitt Set objApp = WScript.CreateObject("Scripting.filesystemobject") Dim EingabeAnzahl Dim AnzahlOK do EingabeAnzahl = InputBox("Geben Sie die Anzahl der gewünschten Dateien ein. Maximal 255") if IsNumeric(EingabeAnzahl) then if EingabeAnzahl<256 and EingabeAnzahl>0 then AnzahlOK=true end if if AnzahlOK<>true then MsgBox ("Ihre Eingabe ist falsch: " & EingabeAnzahl) loop until AnzahlOK or EingabeAnzahl = "" if EingabeAnzahl = "" then msgbox "Abbruch.":wscript.quit MsgBox ("Ihre Eingabe: " & EingabeAnzahl) EingabeAnzahl = CByte(EingabeAnzahl) '2.Abschnitt Dim EingabeVerzeichnis Dim VerzeichnisExistenzpruefung Set VerzeichnisExistenzpruefung = CreateObject("Scripting.FileSystemObject") do EingabeVerzeichnis = InputBox("Geben Sie das gewünschte Verzeichnis ein."&vbcrlf&" Beispiel: C:\Testreihe\Test1") MsgBox ("Ihre Eingabe: " & EingabeVerzeichnis) VerzeichnisOK=VerzeichnisExistenzpruefung.folderexists(""&EingabeVerzeichnis&"") if VerzeichnisOK<>true then MSGBOX ("Verzeichnis ist nicht vorhanden!") loop until VerzeichnisOK=true or EingabeVerzeichnis = "" if EingabeVerzeichnis = "" then msgbox "Keinen Pfad angegeben. Abbruch":wscript.quit MSGBOX("Verzeichnis existiert") '3.Abschnitt Dim Zaehler Set SpeicherUeberpruefung = objApp.getdrive(mid(EingabeVerzeichnis,1,2)) Set DateiExistenzpruefung = CreateObject("Scripting.FileSystemObject") 'eine Datei ist ca. 22 Bytes gross if (22 * EingabeAnzahl) > SpeicherUeberpruefung.freespace then msgbox "Nicht genügend Speicher! Abbruch.":wscript.quit for Zaehler = 1 to EingabeAnzahl If DateiExistenzpruefung.fileExists(EingabeVerzeichnis&"\test" &Zaehler&".txt") then DateiUeberschreiben = MSGBOX (("File test"&Zaehler&".txt existiert schon! File wird überschrieben! Klicken Sie auf Abbrechen, um den Vorgang abzubrechen"), vbOKCancel) If DateiUeberschreiben = vbCancel Then MsgBox("Der Vorgang wird abgebrochen."):WScript.Quit End If Set logbuch =objApp.opentextfile(EingabeVerzeichnis&"\test" &Zaehler&".txt", 2, true,0) logbuch.writeline Now logbuch.close next '4.Abschnitt MsgBox("Es wurden erfolgreich "&EingabeAnzahl&" Dateien im Verzeichnis "&EingabeVerzeichnis&" erstellt.") Ich habe zwar grundlegende Sachen angepasst, allerdings kann man noch einiges optimieren. Zitieren
goeswith Geschrieben 23. Januar 2008 Autor Geschrieben 23. Januar 2008 @KEO Danke.. Merci... Thanks Ja, ich weiss... Ich werde mich an die Bücher machen... Besten Dank nochmals... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.