Ich würde gerne den Fortschritt einer Dateikopieroperation anzeigen können, wenn ich Dateien mit Ruby kopiere (derzeit mit FileUtils.cp). Ich habe versucht, die verbose
-Option auf true
zu setzen, aber das scheint einfach so zu sein Zeige mir den Kopierbefehl ausgegeben.
Ich führe dieses Skript gerade von der Kommandozeile aus, also möchte ich im Idealfall etwas wie SCP beim Kopieren von Dateien präsentieren, aber ich bin nicht so nervös über die Präsentation, so lange ich kann Sehen Sie den Fortschritt.
Da ich nicht genug Rep haben, um Antworten zu bearbeiten, hier ist meine Version basierend auf pisswillis Antwort, fand ich eine Fortschrittsbalken , die ich auch in meinem Beispiel verwende. Ich habe das getestet und es hat soweit funktioniert, aber es könnte mit etwas Aufräumen zu tun haben:
%Vor%Rollen Sie Ihre eigenen mit IO.syswrite, IO.sysread.
Entscheide zuerst die Länge des Fortschrittsbalkens (in Zeichen) .. dann sollte dieser Pseudocode es tun (NICHT GEPRÜFT):
%Vor%wobei update_progress_bar () Ihre Methode ist, den Fortschrittsbalken um ein Zeichen zu erhöhen. Das Obige wird nicht getestet und wird Rubin-Puristen wahrscheinlich krank machen. Insbesondere könnte eine EOFException die Schleife durcheinander bringen. Außerdem müssen Sie sicherstellen, dass alle Bytes geschrieben werden, wenn no_of_bytes keine Ganzzahl ist.
Oder du könntest es einfach hacken, um scp zu benutzen, wenn das der Fortschrittsbalken ist, den du magst:
%Vor% Sie müssen sicherstellen, dass die Quell- und Zielnamen für einen Systemaufruf ordnungsgemäß maskiert sind. Das localhost:
-Tag bewirkt, dass scp die Dateien so wie zwischen den Computern kopiert, so dass es einen Fortschrittsbalken anzeigt.
Unter Windows vergessen Sie nicht, das 'b' für Binärdateien hinzuzufügen, also sollten 'w' und 'r' 'wb' und 'rb' für Binärdateien sein.
%Vor%