Powershell:一些简单的编号

时间:2017-11-23 19:22:06

标签: powershell

所以我希望得到一个简单的"这是我们在#34;运行powershell脚本时在主机中显示的编号。我创建了下面的内容:#/ p>

$musicList = Get-ChildItem "C:\Users\rlyons\Music" -Recurse -File | Select-Object FullName
$outfile = @{} 
$num = 1
foreach ($sound in $musicList) {
    $file = $sound.FullName.ToString()
    $md5 = Get-FileHash $file -Algorithm MD5
    $outFile.$file += $md5.Hash
    Write-Output "Processed file $num"
    $num ++
}

这很棒!除了它给了我:

Processed file 1
Processed file 2
Processed file 3
Processed file 4
Processed file 5

等等。我想要的是每次处理文件时屏幕都要清除,所以我想看到的是在写入主机的行末尾处理的文件编号变化。

我尝试在Clear-Host之后以及在foreach循环开始时添加好的旧$num ++,但我得到的只是一条闪烁的线,有时是部分可以看到的东西。是的,这取决于文件的处理速度,但我想知道这是否有诀窍?要在屏幕上连续保持Processed file位,但是数字会递增吗?

如果它没有清除屏幕,那就更好了,所以你可以看到所有先前写过的输出,但这一行刷新了吗?这可能吗?

注意:我在VS Code,Powershell 5.1

中尝试此操作

1 个答案:

答案 0 :(得分:4)

根据评论,Write-Progress更适合这种情况,因为它可以为您提供所需的输出,但不会影响脚本的实际输出流(例如,您可能会返回任何可能的后续命令)写)。

以下是您可能希望使用Write-Progress的方法,该$musicList = Get-ChildItem "C:\Users\rlyons\Music" -Recurse -File | Select-Object FullName $outfile = @{} $num = 1 foreach ($sound in $musicList) { $file = $sound.FullName.ToString() $md5 = Get-FileHash $file -Algorithm MD5 $outFile.$file += $md5.Hash Write-Progress -Activity "Processed file $num of $($musiclist.count)" -PercentComplete ($num / $musiclist.count * 100) $num ++ } 也会显示完成百分比:

uint8_t