none
Dateiübertragung mit synchronisiertem Ladebalken RRS feed

  • Frage

  • Hallo,

    ich wollte mir ein Script schreiben, dass die Daten von meinem PC auf einem USB-Stick kopiert. Mein Problem ist, dass es nicht funktioniert und ich nicht weiß warum. Kann mir jemand helfen?

    $DataPc = "$HOME\Documents"
    $Usb = "D:\"
    $Items = (Get-ChildItem $DataPc)
    [int]$i = 0
    foreach ($file in $Items)
    {
        $i++
        $file = $Items[$i]
        Write-Progress -Activity "Safe Data..."  -Status (($Items.Count*$i)/100) -PercentComplete (($Items.Count*$i)/100)
        sleep -Millis 1
        Move-Item -Path $DataPc -Destination $Usb -WhatIf
    }
    $i = 0
    Ich glaube, dass das Problem an...
    $file = $Items[$i]

    ...liegt. Dieser Teil soll eigentlich aus den ganzen Dateien die $i. Datei auswählen.

    Mittwoch, 30. Oktober 2019 07:00

Antworten

  • Probier ma so:
    $Path = "$HOME\Documents"
    $USBDrive = 'D:'
    $FileList = Get-ChildItem -Path $Path -Recurse -Force
    [DOUBLE]$ratio =  100 / $FileList.count 
    [DOUBLE]$PercentComplete = 0
    $Counter = 0
    foreach ($File in $FileList) {
        $PercentComplete += $ratio
        $Counter ++
        Write-Progress -Activity 'Safe data...' -Status "Kopiere Datei Nr: $Counter. Name: $File ..." -PercentComplete $PercentComplete
        Start-Sleep -Milliseconds 100
    }


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 30. Oktober 2019 07:40
  • $file = $Items[$i]

    ...liegt. Dieser Teil soll eigentlich aus den ganzen Dateien die $i. Datei auswählen.

    Durch Foreach steht in $file doch schon die $i. Datei - und btw, der Index bei Collections/Arrays fängt in PS bei 0 an, Du fängst aber bei 1 an.

    Und mit dem Shell.Application Objekt wäre es IMHO noch eleganter, das zeigt dann nämlich den Windows-Kopierfortschritt an :-)

    https://www.geekshangout.com/vbs-copy-files-and-display-a-progress-bar/


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Mittwoch, 30. Oktober 2019 13:23

Alle Antworten

  • Probier ma so:
    $Path = "$HOME\Documents"
    $USBDrive = 'D:'
    $FileList = Get-ChildItem -Path $Path -Recurse -Force
    [DOUBLE]$ratio =  100 / $FileList.count 
    [DOUBLE]$PercentComplete = 0
    $Counter = 0
    foreach ($File in $FileList) {
        $PercentComplete += $ratio
        $Counter ++
        Write-Progress -Activity 'Safe data...' -Status "Kopiere Datei Nr: $Counter. Name: $File ..." -PercentComplete $PercentComplete
        Start-Sleep -Milliseconds 100
    }


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 30. Oktober 2019 07:40
  • $file = $Items[$i]

    ...liegt. Dieser Teil soll eigentlich aus den ganzen Dateien die $i. Datei auswählen.

    Durch Foreach steht in $file doch schon die $i. Datei - und btw, der Index bei Collections/Arrays fängt in PS bei 0 an, Du fängst aber bei 1 an.

    Und mit dem Shell.Application Objekt wäre es IMHO noch eleganter, das zeigt dann nämlich den Windows-Kopierfortschritt an :-)

    https://www.geekshangout.com/vbs-copy-files-and-display-a-progress-bar/


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Mittwoch, 30. Oktober 2019 13:23