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 cmdlet 进行测试):

time
----
0 Minutes 0 Seconds 16 Milliseconds

还有一个“持续时间”属性。我会深入研究它,看看这是否可以简化事情。

于 2013-07-23T16:03:36.070 回答
2

只需使用MinutesSeconds属性而不是TotalMinutesTotalSecondsTotal - 属性是双精度浮点数,为您提供给定时间单位的总时间跨度,而只是单位名称(天、小时、分钟、秒...)的属性为您提供该单位的组成部分时间跨度的整数。因此,要获得类似“ x分和y秒”的输出,请执行以下操作:

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

或者,如果您愿意,请制作第二行:

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

我一直在寻找与 OP 相同类型的输出。

为了得到我想要的:

$script:start = get-date
$startFulltime = (Get-Date)
copy-item $var0, $var1, $var2 Folders -force -recurse -verbose -Exclude name
$endFulltime = (Get-Date)
(New-TimeSpan $startFulltime $endFulltime).ToString("hh'h:'mm'm:'ss's'")

结果将类似于:

02h:42m:12s
于 2018-08-09T18:35:35.410 回答