Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie kann ich den Kopierfortschritt in Prozent auf der Konsole anzeigen?
Subix
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

Wie kann ich den Kopierfortschritt in Prozent auf der Konsole anzeigen?

beantworten | zitieren | melden

Hallo,

ich suche ein Möglichkeit den Kopierfortschritt von Dateien in Prozent auf der Konsole auszugeben.
Ich habe hier im Forum etwas ähnliches gefunden: CopyComponent zum Kopieren von Dateien mit Fortschritts-, Datendurchsatz-, und Restzeitberechnung

Da ich noch nicht so der Spezialist in C# bin wollte ich Fragen ob ich diese Klasse vielleicht mit ein paar kleinen Änderungen trotzdem verwenden kann, andernfalls benötige ich eure Hilfe dabei so eine Klasse für eine C# Konsolenanwendung zu finden.

Ich danke allen im Voraus
private Nachricht | Beiträge des Benutzers
Subix
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

beantworten | zitieren | melden

Tut mir leid ich habe den Beitrag von Abt ziemlich weit unten übersehen.

Ist sein Projekt QuickIO.NET dafür geeignet?
QuickIO.NET - Performante Dateioperationen
private Nachricht | Beiträge des Benutzers
Ahrimaan
myCSharp.de - Member



Dabei seit:
Beiträge: 363
Herkunft: Thorn

beantworten | zitieren | melden

Hallo Subix,

Console Progressbar, hier gibt es eine Lösung für die Progressbar in einer Console

@Edit: Ja, QuickIO ist ein Framework zum kopieren von Dateien etc. Fast as Hell !

VG
Ahri
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Ahrimaan am .
private Nachricht | Beiträge des Benutzers
Subix
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

beantworten | zitieren | melden

Danke für deine Antwort.

Wie kann ich die ProgressBar so einstellen, das Sie nicht nach einer Zeit weiter zählt sondern Anhand des Fortschrittes des Kopiervorgangs?

Dazu kenne ich mich zu wenig aus
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3430
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,

um mal die Eingangsfrage zu beantworten:
Zitat
ob ich diese Klasse vielleicht mit ein paar kleinen Änderungen trotzdem verwenden kann

Ja, kannst Du. Es sind sogar überhaupt keine Änderungen an der Klasse nötig.
Hier mal ein ganz einfaches Beispiel (schöner wäre es natürlich mit async/await):

using System;
using System.ComponentModel;
using System.Threading;
using de.myCSharp.Snippets.CopyComponent;

namespace ConsoleSample
{
    class Program
    {
        static void Main(string[] args)
        {
            BackgroundWorker bw = new BackgroundWorker();
            BinaryCopy bc = new BinaryCopy();
            ManualResetEvent mre = new ManualResetEvent(false);
            bc.BinaryCopyEvent += new BinaryCopyStepEventHandler(bc_BinaryCopyEvent);
            bc.FileListCopyEvent += new FileListCopyEventHandler(bc_FileListCopyEvent);
            bw.RunWorkerCompleted += delegate { mre.Set(); };
            bw.DoWork += delegate 
            {
                bc.CopyFolder(@"C:\my\source", @"C:\my\destination", false);
            };
            bw.RunWorkerAsync();
            mre.WaitOne();
            Console.ReadLine();
        }

        static void bc_FileListCopyEvent(object sender, FileListCopyEventArgs e)
        {
            Console.CursorLeft = 0;
            Console.CursorTop = 1;
            Console.Write("Total: {0}", e.Percent);
        }

        static void bc_BinaryCopyEvent(object sender, BinaryCopyStepEventArgs e)
        {
            Console.CursorLeft = 0;
            Console.CursorTop = 0;
            Console.Write("File: {0}", e.Percent);
        }

    }
}

Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
Subix
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

beantworten | zitieren | melden

Danke.

Jedoch steht dann nur wie viele Dateien noch verbleiben.
Ich hätte gerne die genaue Angabe wie viel er prozentual schon kopiert hat und die Restzeit

Bei den Dateien handelt es sich um zip-Archive mit einer Mindestgröße von ca. 50MB bis unbegrenzt, dies ist immer unterschiedlich
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Subix am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16205

beantworten | zitieren | melden

Das is nur ne Dreisatzrechnung.

Bitte hab Verständnis, dass wir nicht die Programmierarbeit für Dich leisten werden, die im Detail Deinen Wünschen entspricht.
Das hier ist ein Forum für Hilfestellungen; eine Jobbörse zum Vergeben von Aufträgen haben wir jedoch ebenfalls: Jobbörse
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3430
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,
Zitat
Jedoch steht dann nur wie viele Dateien noch verbleiben.
Meinst Du mein Beispiel? Dann stimmt das so nicht.
Die Zahl, die hinter "File: " ausgegeben wird, ist der Fortschritt der Einzeldatei, die hinter "Total: " der Gesamtfortschritt, jeweils in Prozent.

Was die anderen Angaben betrifft, die Du haben willst, schau mal in die jeweiligen EventArgs rein, da ist schon alles drin. Du musst es nur noch ausgeben.
Ist wie gesagt nur ein kleines einfaches Beispiel, wie Du die Klasse überhaupt auf der Konsole nutzen kannst.

Gruß, MarsStein

Edit: Die Restzeit für den Gesamtfortschritt musst Du selbst berechnen (wie Abt schrieb, über Dreisatz). Das ist allerdings dann ein Wert, der zu Anfang recht ungenau ist und dann mit de rZeit sich der Realität immer weiter annähert. Wie man das auch sonst von solchen Zeitangaben kennt ;)
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von MarsStein am .
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers