1

一部のファイルをバックアップ ストレージにコピーするスクリプトがあります。そして、これを行うのにどれくらいの時間がかかるかを確認するためにタイマーを追加しました。使った

$script:start = Get-Date
$start = (Get-Date)
Copy-Item $var0, $var1, $var2 Folders -force -recurse -verbose -Exclude name
$endFulltime = (Get-Date)
"$(($endFulltime-$startFulltime).totalminutes)"

これに関する問題は出力です。0,34255234561245 分、または秒にすると、同じように見えますが、数字が異なります。したがって、問題は、間違った出力が得られることではありません。少し乱雑に見えます。

5 分 43 秒のような出力を取得することは可能でしょうか? この非常に長い数の代わりに。

4

3 に答える 3

6

使用する:

Measure-Command {copy-item $var0, $var1, $var2 Folders -force -recurse -verbose -Exclude name} | select @{n="time";e={$_.Minutes,"Minutes",$_.Seconds,"Seconds",$_.Milliseconds,"Milliseconds" -join " "}}

Measure-Command は、コマンドの実行時間を測定することです。出力をカスタマイズするには、「Select-Object」でハッシュ テーブルを使用します。

私のラボでの出力は次のとおりです (テストにはGet-Processコマンドレットを使用しています)。

time
----
0 Minutes 0 Seconds 16 Milliseconds

「期間」プロパティもあります。それが物事を単純化できるかどうかを調べるために、それを掘り下げます。

于 2013-07-23T16:03:36.070 に答える
2

TotalMinutesおよびTotalSecondsの代わりに、 MinutesおよびSecondsプロパティを使用してください。Total - プロパティは倍精度の浮動小数点数で、指定された時間単位で合計タイムスパンを示します。一方、単位の名前 (日、時間、分、秒など) であるプロパティは、その単位のコンポーネントを示します。整数としてのタイムスパン。したがって、「xy秒」のような出力を取得するには、次のようにします。

$elapsedTime = $endFulltime - $start
"{0} minute(s) and {1} second(s)" -f $elapsedTime.Minutes, $elapsedTime.Seconds

または、必要に応じて 2 行目を作成します。

"$($elapsedTime.Minutes) minute(s) and $($elapsedTime.Seconds) seconds"
于 2013-07-23T16:04:11.203 に答える