我需要使用Windows命令行(默认情况下适用于XP Pro或更高版本)复制文件,并在此过程中显示进度。
进度指示器可以在终端或GUI窗口中显示。它旨在在批处理脚本期间使用。
我需要使用Windows命令行(默认情况下适用于XP Pro或更高版本)复制文件,并在此过程中显示进度。
进度指示器可以在终端或GUI窗口中显示。它旨在在批处理脚本期间使用。
我使用了带有 /z 选项的复制命令来复制网络驱动器上的文件。这个命令也适用于本地驱动器之间的复制。已在 XP Home 版本上测试通过。
Robocopy
更适合这些目的。 - AnuragRobocopy,或称“强大的文件复制”,是一个命令行目录和/或文件复制命令。Robocopy在功能上替代了Xcopy,提供了更多选项。它作为Windows资源工具包的一部分,从Windows NT 4.0开始提供,并在Windows Vista和Windows Server 2008中首次作为标准功能引入。该命令为
robocopy
...
Esentutl的/y选项允许像这样带有进度条的复制(单个)文件:
命令应该如下所示:
esentutl /y "FILE.EXT" /d "DEST.EXT" /o
这个命令在每台Windows机器上都可以使用,但y
选项只在Windows Vista中提供。
由于它仅适用于单个文件,对于小文件来说似乎并不是很有用。
另一个限制是该命令不能覆盖文件。这里有一个包装脚本,它会检查目标文件夹,如果需要的话可以将其删除(通过传递/h
参数可以查看帮助信息)。
另一个选择是通过PowerShell、JScript或VBScript自动化shell.Application对象。这将允许您在资源管理器弹出窗口显示进度的情况下复制项目。以下是示例脚本和用法:
call shellCopy.bat "D:\Folder\anotherFolder" "C:\Destination"
- Copy
(因为它是使用右键单击和复制/粘贴使用的)。不过,您可以通过使用官方文档来调整 选项值 并要求覆盖,例如。
/o
开关。Esentutl
不能覆盖文件,所以您需要添加一行if exist destination ...
。 - npocmakaModel 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。 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