2016-10-30 7 views
0

Я пишу сценарий партии, чтобы помочь мне собрать некоторые данные о пропускной способности о многочисленных офисах в нашей глобальной сети. Он использует создателя файлов случайных данных, чтобы помочь мне избежать оптимизаторов, влияющих на результаты.Windows пакетный скрипт spwn normal windows copy process

Как копировать файл, создавая стандартное окно копирования окон, которое показывает скорость передачи?

Если я использую метод «copy», он просто копирует молча в окне cmd, и я не могу видеть скорость.

if not exist "C:\temp\xfertest" mkdir C:\test\xfertest 
rdfc C:\test\xfertest\random100.dat 100000000 
copy C:\test\xfertest\random100.dat \\nat-srv-007\Deliver 
exit 
+2

Команда 'copy' не имеет способа отображения скорости передачи. – SomethingDark

+1

Это * стандартное окно копирования Windows * является результатом функции Windows SHFileOperation. Он не может быть вызван из командного файла, и нет средств для отображения полосы пропускания из операции копирования файлов в пакетном режиме. Если вы хотите это сделать, вам нужно будет написать реальное приложение, чтобы это сделать. –

+0

Спасибо Кен. Я подозревал, как много. Просто пытаюсь спасти себя от написания приложения только для одной работы. –

ответ

0

Этот 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

 Смежные вопросы

  • Нет связанных вопросов^_^