会社の OS のベンチマークを実行しようとしています。手順の 1 つは、ユーザーがエクスプローラーで単に ctrl-c/ctrl-v を使用して何かをどこかにコピーするのにかかる時間を計算することです。そのため、そのアクションをバッチでスクリプト化して数回実行する方法を知りたいので、実行時間を取得できます。具体的には、コピープロセスのポップアップを表示する方法です。「rundll32 shell32.dll」が何らかの形で関与していると思いますが、方法がわかりません。
ありがとう
会社の OS のベンチマークを実行しようとしています。手順の 1 つは、ユーザーがエクスプローラーで単に ctrl-c/ctrl-v を使用して何かをどこかにコピーするのにかかる時間を計算することです。そのため、そのアクションをバッチでスクリプト化して数回実行する方法を知りたいので、実行時間を取得できます。具体的には、コピープロセスのポップアップを表示する方法です。「rundll32 shell32.dll」が何らかの形で関与していると思いますが、方法がわかりません。
ありがとう
あなたはどちらかかもしれません
アプリケーションからWindows User Interface Automation API ( http://en.wikipedia.org/wiki/Microsoft_UI_Automation ) を直接使用します。
または、AutoItスクリプトを作成することもできます ( http://www.autoitscript.com/site/autoit/ )
あなたはvbscriptでそれを行うことができます。Folder.CopyHere メソッドページのスクリプト例を参照してください。興味深いことに、このFolder.CopyHere
方法はファイルを zip フォルダーに入れる場合にも機能します。例を見てください(を使用する方法の別の実世界の例を見る以外の理由がない場合CopyHere
)。scripting.filesystemobject
copy 関数とは異なり、shell.application
copyhere 関数は Windows UI API を使用し、存在する場合は置換を求め、ユーザーがドラッグ アンド ドロップしたかのようにファイル コピー ダイアログを表示します。
次に示すのは、100 回までコピー".\Ubi Caritas.mp3"
し、操作にかかった時間をミリ秒単位で (4 桁の精度で) 表示する、 benchmark.vbs の例です。%temp%
set wShl = CreateObject("Wscript.Shell")
tmp = wShl.ExpandEnvironmentStrings("%TEMP%")
set wShl = nothing
set oShl = CreateObject("shell.application")
set fso = CreateObject("Scripting.FileSystemObject")
set srcfile=fso.GetFile("Ubi Caritas.mp3")
dest=tmp & "\" & srcfile.Name
wscript.Echo "Testing copy speed from " & srcfile.Name & " (" & srcfile.size & " bytes) to " & dest
' single copy
msb4 = Timer
call doCopy
msafter = Timer
wscript.Echo "1 copy took " & FormatNumber(msafter - msb4, 4, -2, -2, false) & " seconds."
' 100 copies
msb4 = Timer
for i = 0 to 100
call doCopy
next
msafter = Timer
wscript.Echo "100 copies took " & FormatNumber(msafter - msb4, 4, -2, -2, false) & " seconds."
set destfile = nothing
set oShl = nothing
set fso = nothing
sub doCopy
oShl.namespace(tmp).copyhere(srcfile.Name), 16
if isEmpty(destfile) then set destfile = fso.getFile(dest)
do until destfile.size = srcfile.size
wscript.sleep 10
loop
destfile.delete
end sub
出力例:
C:\Users\me\Desktop>cscript /nologo benchmark.vbs
Testing copy speed from Ubi Caritas.mp3 (2929371 bytes) to C:\Users\me\AppD
ata\Local\Temp\Ubi Caritas.mp3
1 copy took 0.0664 seconds.
100 copies took 4.0430 seconds.