2008-09-12 7 views
25

Kennt jemand eine Windows-Befehlszeile (standardmäßig verfügbar unter XP Pro oder höher), die eine Datei kopieren kann, während der Fortschritt angezeigt wird. Es ist mir egal, ob die Fortschrittsanzeige in einem Terminal oder einem GUI-Fenster ist.Kopieren von Dateien auf Windows-Befehlszeile mit Fortschritt

während Batch-Datei Scripting

+5

Robocopy ist dein Freund hier. –

+0

Außer Robocopy ist wirklich ein Ordner Kopierer im Gegensatz zu einem Dateikopierer. –

Antwort

-2

Sie Dies soll verwendet werden, leicht ein Programm schreiben, könnte das zu tun, ich habe einige, dass ich geschrieben habe, kopiert wird, dass die Anzeige Bytes als die Datei kopiert. Wenn Sie interessiert sind, kommentieren Sie und ich werde einen Link auf einen Link setzen.

+0

Ja, ich weiß, ich könnte so etwas schreiben. Die Idee besteht darin, verfügbare Ressourcen wiederzuverwenden und die gemeinsame Nutzung des Skripts zu vereinfachen. –

+2

Um fair zu sein Gulzar, bot Josef an, Ihnen eine zu schicken und Ihnen seine verfügbare Ressource zur Wiederverwendung zu senden. Ich vermute, du hast nach 9 Wörtern aufgehört zu lesen. – harriyott

+0

Irgendein Josef, könntest du diese mit dem Rest der Gemeinschaft teilen :) –

18

robocopy:

Robocopy oder "Robust File Copy", ist ein command-line Verzeichnis und/oder Dateireplikation command. Robocopy ersetzt funktional Xcopy durch mehr Optionen. Es ist als Teil der Windows Resource Kit verfügbar, die mit Windows NT 4.0 beginnt, und wurde zuerst als eine Standardfunktion in Windows Vista und Windows Server 2008 eingeführt. Der Befehl ist robocopy ...

+1

Schließen, aber nicht verfügbar auf XP y taubult. Obwohl ich darüber nachdenken werde. –

+0

Es ist mit dem Windows 2003 Server Resource Toolkit –

1

Dieses technet link hat einige gute Informationen für das Kopieren von großen Dateien. Ich habe ein Exchange-Server-Dienstprogramm verwendet, das in dem Artikel erwähnt wird, der den Fortschritt zeigt und intern nicht gepufferte Kopierfunktionen für eine schnellere Übertragung verwendet.

In einem anderen Szenario habe ich Robocopy verwendet. Robocopy GUI macht es einfacher, Ihre Befehlszeilenoptionen richtig zu machen.

35

Verwenden Sie den Kopierbefehl mit der Option/z zum Kopieren über Netzlaufwerke, auch zum Kopieren zwischen lokalen Laufwerken. auf XP home edition

+1

perfekte Antwort. Dies funktioniert sehr gut, lässt Sie auch neu starten, wenn eine Verbindung unterbrochen wird. Überrascht hatte ich dieses Feature in der Vergangenheit nicht bemerkt, Danke. – Justin

+0

xp any, und win7 any. – barlop

+0

+1 Danke @adrian es hat perfekt funktioniert. Wie ist es gut, über Netzwerklaufwerke zu kopieren? Ich finde 'Robocopy' besser für diese Zwecke? – Anurag

0

Hier ist das Skript Ich verwende:

@ECHO off 
SETLOCAL ENABLEDELAYEDEXPANSION 
mode con:cols=210 lines=50 
ECHO Starting 1-way backup of MEDIA(M:) to BACKUP(G:)... 
robocopy.exe M:\ G:\ *.* /E /PURGE /SEC /NP /NJH /NJS /XD "$RECYCLE.BIN" "System Volume Information" /TEE /R:5 /COPYALL /LOG:from_M_to_G.log 
ECHO Finished with backup. 
pause 
4

Einige interessante Timings in Bezug auf alle diese Methoden. Wenn Sie Gigabit-Verbindungen haben, sollten Sie das Flag/z nicht verwenden, da sonst die Verbindungsgeschwindigkeit beeinträchtigt wird. Robocopy oder Dism sind die einzigen Tools, die mit voller Geschwindigkeit laufen und einen Fortschrittsbalken anzeigen. wdscase dient zum Multicasting von einem WDS-Server und ist möglicherweise schneller, wenn Sie mehr als 5 Computer abbilden. Um das 1:17 Timing zu erreichen, habe ich die Gigabit-Verbindung mit 920 Mbit/s ausgeschöpft, damit Sie das nicht bei zwei Verbindungen gleichzeitig bekommen. Beachten Sie auch, dass das Exportieren des kleinen Wim-Index aus der größeren Wim-Datei zu lange dauert, als nur das Ganze zu kopieren.

Model Exe  OS  switches  index size time link speed 
8760w dism  Win8  /export-wim index 1 6.27GB 2:21 link 1Gbps 
8760w dism  Win8  /export-wim index 2 7.92GB 1:29 link 1Gbps 
6305 wdsmcast winpe32 /trans-file res.RWM 7.92GB 6:54 link 1Gbps 
6305 dism  Winpe32 /export-wim index 1 6.27GB 2:20 link 1Gbps 
6305 dism  Winpe32 /export-wim index 2 7.92GB 1:34 link 1Gbps 
6305 copy  Winpe32 /z   Whole 7.92GB 25:48 link 1Gbps 
6305 copy  Winpe32 none   Wim  7.92GB 1:17 link 1Gbps 
6305 xcopy  Winpe32 /z /j  Wim  7.92GB 23:54 link 1Gbps 
6305 xcopy  Winpe32 /j   Wim  7.92GB 1:38 link 1Gbps 
6305 VBS.copy Winpe32    Wim  7.92 1:21 link 1Gbps 
6305 robocopy Winpe32    Wim  7.92 1:17 link 1Gbps 

Wenn Sie nicht robocopy.exe zur Verfügung haben, warum führen Sie es nicht von der Netzwerkfreigabe Sie Ihre Dateien aus kopieren? In meinem Fall bevorzuge ich das, damit ich meine WinPE-boot.wim-Datei nicht jedes Mal neu erstellen muss, wenn ich eine Änderung vornehmen möchte, und dann Dutzende von Flash-Laufwerken aktualisieren.

11

Die Esentutl/y Option ermöglicht copyng (single) Dateien mit Fortschrittsbalken, wie diese Datei:

enter image description here

der Befehl sollte wie folgt aussehen:

esentutl /y "FILE.EXT" /d "DEST.EXT" /o 

Der Befehl auf jeden verfügbar ist Windows-Maschine, aber die y Option wird in Windows Vista vorgestellt. Da es nur mit einzelnen Dateien funktioniert, sieht es für kleine nicht sehr nützlich aus. Andere Einschränkung ist, dass der Befehl Dateien nicht überschreiben kann. Here's Ein Wrapper-Skript, das das Ziel überprüft und bei Bedarf löschen kann (Hilfe kann angezeigt werden, indem /h übergeben wird).

+0

Wie überschreiben Sie vorhandene Dateien im Ziel? Muss ich es manuell löschen? Ich kann Win7 nicht einschalten. – PeterCo

+0

@PeterCo ja '/ o' Schalter ist unter Win7 verfügbar. 'Esentutl' kann Dateien nicht überschreiben, daher müssen Sie die Zeile' if exist destination ... 'hinzufügen – npocmaka

Verwandte Themen