Zum Inhalt springen

WSH Schleife


goeswith

Empfohlene Beiträge

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.")

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...