所以我希望得到一个简单的"这是我们在#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
中尝试此操作答案 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