我需要使用 Windows 命令行(默认在 XP Pro 或更高版本上可用)复制文件并在此过程中显示进度。
进度指示器可以在终端或 GUI 窗口中。它旨在用于批处理文件脚本。
我需要使用 Windows 命令行(默认在 XP Pro 或更高版本上可用)复制文件并在此过程中显示进度。
进度指示器可以在终端或 GUI 窗口中。它旨在用于批处理文件脚本。
我使用带有 /z 开关的复制命令通过网络驱动器进行复制。也适用于本地驱动器之间的复制。在 XP 家庭版上测试。
机械复制:
Robocopy或“强大的文件复制”是一个命令行目录和/或文件复制命令。Robocopy 在功能上取代了Xcopy,具有更多选项。从 Windows NT 4.0 开始,它已作为Windows 资源工具包的一部分提供,并且首次作为标准功能引入Windows Vista和Windows Server 2008中。命令是
robocopy
...
关于所有这些方法的一些有趣的时间安排。如果您有千兆连接,则不应使用 /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 文件。
这个 technet链接有一些用于复制大文件的好信息。我使用了文章中提到的交换服务器实用程序,它显示了进度并在内部使用非缓冲复制功能以加快传输速度。
在另一种情况下,我使用了 robocopy。Robocopy GUI使您更容易获得正确的命令行选项。
这是我使用的脚本:
@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
如果您想复制文件并查看“进度”,我建议在批处理中使用下面的脚本,我从另一个脚本中使用它作为基础
我在脚本复制游戏文件时使用了进度条和百分比核王座:
@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
您可以轻松地编写一个程序来执行此操作,我已经编写了几个程序,显示在复制文件时复制的字节。如果您有兴趣,请发表评论,我会发布一个链接。