Schleife richtig setzten.

Marco26

Cadet 3rd Year
Registriert
Sep. 2016
Beiträge
37
Hey zusammen ^^

Ich würde gerne in meinem Script eine Schleife einbauen hänge aber an dem Punkt in dem ich sie einsetzte.
Vorab hier der Code
Code:
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

#Fenster
$form = New-Object Windows.Forms.Form
$form.text = "Share erstellen"


$label = New-Object Windows.Forms.Label
$label.Location = New-Object Drawing.Point 50,30
$label.Size = New-Object Drawing.Point 200, 15
$label.Text = "Geben Sie den Pfad an"
$form.Controls.Add($label)


#Textbar für den Pfad
$textPath = New-Object Windows.Forms.Textbox
$textPath.Location = New-Object Drawing.Point 50,60
$textPath.Size = New-Object Drawing.Point 200,30
$textPath.Text = "E:\"
$form.Controls.Add($textPath)

#EndeKnopf

#Cancelknopf
$ButtonCancel = New-Object Windows.Forms.Button
$ButtonCancel.Location = New-Object Drawing.Point 150,200
$ButtonCancel.Text = "Cancel"
$ButtonCancel.Add_Click({$form.Close()})
$form.Controls.Add($ButtonCancel)

#OKButton
$WeiterButton1 = New-Object Windows.Forms.Button
$WeiterButton1.Location = New-Object Drawing.Point 50,200
$WeiterButton1.Text = "Weiter"
$form.Controls.Add($WeiterButton1)
$WeiterButton1.Add_Click({

if (Test-Path $textPath.Text)  {

$label.Text = "Geben Sie den Sharename ein"
$form.Controls.Remove($textPath)
$form.Controls.Remove($WeiterButton1)

}
Else {

$label.Text = ("Der Pfad" + $textPath + "konnte nicht gefunden werden")
}
})

$form.ShowDialog()


Ich möchte bei der if else Klause es so haben. Das wenn if Eintritt also ein Pfad gefunden wurde er ganz normal im Script weitergeht. Bei Else soll er den Kompletten Teil bzw den Teil am Anfang in dem er die Textbar und die Eingabe abfrägt hat wiederholen.

Hab mit Schleifen noch nicht wirklich gearbeitet und wäre da für jede Hilfe dankbar ^^
 
Moin,

ich würde einfach eine Variable einführen "Pfad gefunden", solange die 0 ist, hängst du in der Schleife also "while 0"
wenn der Pfad gefunden wird, setzt du die Variable auf 1 und springst damit aus der Schleife raus ;)
also die while schleife komplett um das if else drumrum :))

Grüße,
Nico
 
Das Zauberwort heißt 'fußgesteuerte Schleife'.
Keine Ahnung wie die Syntax in dieser Programmiersprache ist, deswegen hier mal Pseudo-Code:
Code:
do {
  ## in die Schleife kommt die Eingabe + der Code der bei dir im Else-Zweig steht rein
} while (noch kein Pfad gefunden)

# hinter die Schleife kommt der Code aus dem If-Zweig rein
 
Zuletzt bearbeitet:
Klingt nach ner guten Idee, die heb ich mir auf falls ich nochmal bei so nem Problem bin ^^ Komischer weise scheint schon eine Wiederholung in dem ganzen zu sein ^^ Wenn ich einen ungültigen Pfad eingebe verschwindet der WeiterButton1 nicht, wodurch ich also solange auf Weiter klicken kann bis ein gültiger Pfad eingegeben wird. Damit springt er dann auch aus der "Schleife" :D
Ergänzung ()

Aber eventuell könnt ihr mir bei einem weiteren Problem helfen ^^
Nicht wundern hab die Struktur bisschen verändert oben alle Variablen und unten nur die Button Befehle.
Und zwar hab ich jetzt das Problem das wenn ich An dem Punkt bin wo ich den Sharenamen angebe. Er mir immer sagt:
Code:
Test-Path : Es wurde kein Positionsparameter gefunden, der das Argument "Sharename" #Eingabe der Textbar
akzeptiert.
egal ob ich einen Ordner angebe der existiert oder der nicht existiert ich bekomme immer diese Meldung
Code:
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

#Fenster
$form = New-Object Windows.Forms.Form
$form.text = "Share erstellen"

#Label
$label = New-Object Windows.Forms.Label
$label.Location = New-Object Drawing.Point 50,30
$label.Size = New-Object Drawing.Point 200, 15
$label.Text = "Geben Sie den Pfad an"
$form.Controls.Add($label)


#Textbar für den Pfad
$textPath = New-Object Windows.Forms.Textbox
$textPath.Location = New-Object Drawing.Point 50,60
$textPath.Size = New-Object Drawing.Point 200,30
$textPath.Text = "E:\"
$form.Controls.Add($textPath)

#Textbar für den Namen
$textName = New-Object Windows.Forms.Textbox
$textName.Location = New-Object Drawing.Point 50,60
$textName.Size = New-Object Drawing.Point 200, 30
$textName.Text = "Sharename"

#EndeKnopf
$ButtonEnd = New-Object Windows.Forms.Button
$ButtonEnd.Location = New-Object Drawing.Point 150,200
$ButtonEnd.Text = "Ende"

#Cancelknopf
$ButtonCancel = New-Object Windows.Forms.Button
$ButtonCancel.Location = New-Object Drawing.Point 150,200
$ButtonCancel.Text = "Cancel"
$ButtonCancel.Add_Click({$form.Close()})
$form.Controls.Add($ButtonCancel)

#WeiterButton Nr2
$WeiterButton2 = New-Object Windows.Forms.Button
$WeiterButton2.Location = New-Object Drawing.Point 50,200
$WeiterButton2.Text = "Weiter"

#WeiterButton Nr.1
$WeiterButton1 = New-Object Windows.Forms.Button
$WeiterButton1.Location = New-Object Drawing.Point 50,200
$WeiterButton1.Text = "Weiter"
$form.Controls.Add($WeiterButton1)
$WeiterButton1.Add_Click({

if (Test-Path $textPath.Text)  {

$label.Text = "Geben Sie den Sharename ein"
$form.Controls.Remove($textPath)
$form.Controls.Remove($WeiterButton1)

$form.Controls.Add($textName)
$form.Controls.Add($WeiterButton2)
}
Else {

$label.Text = ("Der Pfad" + $textPath.Text + "konnte nicht gefunden werden")
}
})

$WeiterButton2.Add_Click({

if (Test-Path $textPath.Text$textName.Text) {

$label.Text = "Der Ordner existiert bereits"
}

Else {

New-Item -Name $textName.Text -ItemType directory -Path $textPath.Text

$form.Controls.Remove($textName)
$form.Controls.Remove($WeiterButton2)
}

})

$form.ShowDialog()

Idee wo ich mich da verhaspelt hab ?
 
Zurück
Oben