Do-While Schleife mit test-path
Sry, dass ich euch nochmals stören muss...
Brauche Hilfe bei einer Do-While Schleife... Es soll erst nach $destination abgefragt werden, wenn der Quellpfad genau definiert wurde
(mit überprüfung, dass der Sourcepfad auch wirklich existiert, falls dieser nicht existiert, erneut abfragen... wenn der Sourcepfad auch wirklich exisitiert soll der Loop verlassen werden)
Mein Code:
...
$source = read-host "Bitte geben sie den Sourcepfad ein"
Do {
If (Test-path $source) {
$destination = read-host "Bitte geben sie den Zielpfad ein (Am Ende des Pfades keinen \ )"
}
else {
echo "Dieser Pfad existiert nicht, bitte prüfen Sie ihre Eingabe!"
}
}
While (bedingung)
...
Nun fehlt eigentlich nur noch die While (bedingung)...
Danke schonmal im Voraus.
Gruss
windelterrorist
Brauche Hilfe bei einer Do-While Schleife... Es soll erst nach $destination abgefragt werden, wenn der Quellpfad genau definiert wurde
(mit überprüfung, dass der Sourcepfad auch wirklich existiert, falls dieser nicht existiert, erneut abfragen... wenn der Sourcepfad auch wirklich exisitiert soll der Loop verlassen werden)
Mein Code:
...
$source = read-host "Bitte geben sie den Sourcepfad ein"
Do {
If (Test-path $source) {
$destination = read-host "Bitte geben sie den Zielpfad ein (Am Ende des Pfades keinen \ )"
}
else {
echo "Dieser Pfad existiert nicht, bitte prüfen Sie ihre Eingabe!"
}
}
While (bedingung)
...
Nun fehlt eigentlich nur noch die While (bedingung)...
Danke schonmal im Voraus.
Gruss
windelterrorist
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 291476
Url: https://administrator.de/forum/do-while-schleife-mit-test-path-291476.html
Ausgedruckt am: 23.12.2024 um 20:12 Uhr
12 Kommentare
Neuester Kommentar
Do {
$source = Read-Host "Quellpfad angeben"
if (!(Test-Path $source)){write-host "Pfad existiert nicht" -ForegroundColor Yellow}
}until(Test-Path $source)
Do {
$destination= Read-Host "Zielpfad angeben"
if (!(Test-Path $destination)){write-host "Pfad existiert nicht" -ForegroundColor Yellow}
}until(Test-Path $destination)
Müssen tut man das nicht, kann man auch kombinieren macht das ganze aber etwas unübersichtllicher
Zitat von @windelterrorist:
Und zwar bei der Do-While Schleife mit dem $destination... wenn man zum Beispiel als Zielpfad "E:\test\kopieren" angibt, dann wäre es doch toll wenn er diesen auch erstellen würde (
Wo ist das Problem ????Und zwar bei der Do-While Schleife mit dem $destination... wenn man zum Beispiel als Zielpfad "E:\test\kopieren" angibt, dann wäre es doch toll wenn er diesen auch erstellen würde (
md 'e:\test\kopieren'
try{
md 'e:\test\kopieren'
}catch{
write-host $_.Exception.Message -F Red
}
http://blogs.msdn.com/b/kebab/archive/2013/06/09/an-introduction-to-err ...
dann sollte es auch bei dir Klick machen.
einfach vorher mit einer if auf einen leeren String prüfen, oder das ganze mit regex abfackeln, bleibt dir überlassen ...
Was ist denn da falsch?
Die Variable ist immer noch ein Object und nicht $null sondern ein leerer String, kannst du dir auch ganz einfach anzeigen lassen mit $source.getType()($source -eq "")
Und außerdem sollte die Prüfung auf leeren String nicht in der gleichen IF-Abfrage stattfinden da immer beide Ausdrücke ausgewertet werden.
Kannst du dir auch als mehrfach verwendbare Funktion kapseln
function Get-ValidPath($query){
While($true){
$input = Read-Host $query
if($input -ne ""){
if (Test-Path $input){
return $input
}else{
write-host "Pfad existiert nicht! Eingabe wiederholen" -ForegroundColor Yellow
}
}else{
write-host "Sie haben keine Eingabe getätigt! Eingabe wiederholen." -ForegroundColor Yellow
}
}
}
cls
$path = Get-ValidPath "Quellpfad eingeben"
$path