使用Progress在Windows命令行上复制文件

时间:2008-09-12 12:01:53

标签: windows batch-file scripting

有没有人知道可以在显示进度时复制文件的Windows命令行(在XP Pro或更高版本中可用)。我不在乎进度指示器是在终端还是GUI窗口中。

这适用于批处理文件脚本

8 个答案:

答案 0 :(得分:41)

使用带有/ z开关的copy命令进行网络驱动器复制,也适用于本地驱动器之间的复制。在XP家庭版上

答案 1 :(得分:18)

robocopy

  

Robocopy 或“强健文件复制”是command-line目录和/或文件复制command。 Robocopy在功能上取代Xcopy,有更多选项。它已作为Windows Resource Kit的一部分从Windows NT 4.0开始提供,并且最初是作为Windows VistaWindows Server 2008中的标准功能引入的。命令是robocopy ...

答案 2 :(得分:13)

Esentutl / y选项允许带有进度条的copyng(单个)文件文件,如下所示:

enter image description here

该命令应如下所示:

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

该命令在每台Windows机器上都可用,但{vid}中显示y选项。 因为它只适用于单个文件,对于小文件看起来不太有用。 其他限制是命令无法覆盖文件。 Here's一个包装器脚本,用于检查目标,如果需要,可以将其删除(通过传递/h可以看到帮助。)

答案 3 :(得分:6)

关于所有这些方法的一些有趣时间。如果您有千兆位连接,则不应使用/ z标志,否则会终止连接速度。 Robocopy或dism是唯一全速运行并显示进度条的工具。 wdscase用于在WDS服务器上进行多播,如果您对5台以上的计算机进行映像,则可能会更快。为了获得1:17的时间,我以920Mbps的速度最大化了千兆连接,因此你不会同时在两个连接上得到它。另请注意,从较大的wim文件导出小wim索引的时间比复制整个文件要长得多。

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

如果您没有robocopy.exe,为什么不从您正在复制文件的网络共享中运行它?在我的情况下,我更喜欢这样做,所以每次我想要进行更改然后更新几十个闪存驱动器时,我都不必重建我的WinPE boot.wim文件。

答案 4 :(得分:1)

这个technet link有一些很好的信息来复制大文件。我使用了文章中提到的交换服务器实用程序来显示进度,并在内部使用非缓冲复制功能以便更快地进行传输。

在另一种情况下,我使用了robocopy。 Robocopy GUI可让您更轻松地获得正确的命令行选项。

答案 5 :(得分:0)

这是我使用的脚本:

@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

答案 6 :(得分:0)

如果您想复制文件并查看“进度”,我建议在 Batch 中使用以下脚本作为基础

我在脚本复制游戏文件核宝座时使用了进度条和百分比:

@echo off
title NTU Installer
setlocal EnableDelayedExpansion

@echo Iniciando instalacao...
if not exist "C:\NTU" (
    md "C:\NTU
)
if not exist "C:\NTU\Profile" (
    md "C:\NTU\Profile"
)
ping -n 5 localhost >nul

for %%f in (*.*) do set/a vb+=1
set "barra="
::loop da barra
for /l %%i in (1,1,70) do set "barra=!barra!Û"
rem barra vaiza para ser preenchida
set "resto="
rem loop da barra vazia
for /l %%i in (1,1,110) do set "resto=!resto!"
set i=0
rem carregameno de arquivos
for %%f in (*.*) do (
    >>"log_ntu.css" (
        copy "%%f" "C:\NTU">nul
        echo Copiado:%%f
    )
    cls
    set /a i+=1,percent=i*100/vb,barlen=70*percent/100
    for %%a in (!barlen!) do echo  !percent!%% /                         
    [!barra:~0,%%a!%resto%]
    echo Instalado:[%%f] / Complete:[!percent!%%/100%]
    ping localhost -n 1.9  >nul
)
xcopy /e "Profile" "C:\NTU\Profile">"log_profile.css"              

@echo Criando atalho na area de trabalho...
copy "NTU.lnk" "C:\Users\%username%\Desktop">nul
ping localhost -n 4  >nul

@echo Arquivos instalados!
pause

答案 7 :(得分:-4)

您可以轻松编写一个程序来执行此操作,我已经编写了几个,在复制文件时显示复制的字节。如果您有兴趣,请发表评论,我会发布一个链接。