Этот vbscript, обернутый в пакетный файл, будет делать то, что вы хотите. Сохраните его с расширением .bat/.cmd
. Или без первой строки с расширением .vbs
.
Используемая техника основана на ком и работает с каждым поддерживающим ее языком скрипта. Просто, чтобы увидеть время начала/окончания даты, общее количество байтов и байт в секунду, оно выводит эти значения на консоль после исчезновения диалогового окна копирования.
rem^ &@cscript //nologo //e:vbscript "%~f0" %* & exit /b
' Copy with the windows dialog box
Option Explicit
Dim cArgs : Set cArgs = WScript.Arguments
Dim iArgCnt : iArgCnt = cArgs.Count
Dim sSource : sSource = cArgs.Item(0)
Dim sDest : sDest = cArgs.Item(1)
Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject")
Dim oSH : Set oSH = CreateObject("shell.application")
Dim oFile, Size, dStart, dEnd
If iArgCnt <> 2 Then
Wscript.Echo "Wrong args, need SourceFile and DestFolder"
Wscript.Quit
End if
If oFS.FileExists(sSource) Then
Set oFile = oFS.GetFile(sSource)
Size = oFile.Size
If oFS.FolderExists(sDest) Then
dStart = Now()
Wscript.Echo "Copy : " & sSource & " " & sDest
Wscript.Echo "Start: " & dStart & " Size : " & Size
FolderCopyHere sSource, sDest
dEnd = Now()
Wscript.Echo "End : " & dEnd & " per/s: " & _
Int(Size/DateDiff("s", dStart, dEnd))
Else
Wscript.Echo "Destination Folder doesn't exist" & sDest
End if
Else
Wscript.Echo "Source file doesn't exist" & sSource
End if
Wscript.Quit
function FolderCopyHere(sSource,sDest)
dim oFld
set oFld = oSH.NameSpace(sDest)
if not oFld is nothing then
oFld.CopyHere(sSource)
end if
set oFld = nothing
end function
Возвращаясь этот вывод на моем компьютере
20:28:24 C:\Test________________________________________
> k:\Bat\CopyExpl.cmd c:\test\big.file Q:\Test
20:28:36 C:\Test________________________________________
> rem &
Copy : c:\test\big.file Q:\Test
Start: 2016-10-30 20:28:36 Size : 2147483648
End : 2016-10-30 20:29:10 per/s: 63161283
20:29:10 C:\Test________________________________________
РЗМ проистекает из обертки диалогового окна широко известен. HTH
Команда 'copy' не имеет способа отображения скорости передачи. – SomethingDark
Это * стандартное окно копирования Windows * является результатом функции Windows SHFileOperation. Он не может быть вызван из командного файла, и нет средств для отображения полосы пропускания из операции копирования файлов в пакетном режиме. Если вы хотите это сделать, вам нужно будет написать реальное приложение, чтобы это сделать. –
Спасибо Кен. Я подозревал, как много. Просто пытаюсь спасти себя от написания приложения только для одной работы. –