0
我有一个脚本,用于调用目录中每个文件的外部程序(SoX)。在每次调用SoX之前,我打电话给Write-Progress
,但进度条被SoX的输出(无论控制台的大小)从控制台缓冲区的顶部推出。有什么我可以做,以避免这种情况?控制台缓冲区以外的写入进度显示
这里的脚本:
$audioFiles = ls -Exclude *.ps1 | ? { !$_.PSIsContainer }
foreach ($audioFile in $audioFiles)
{
$i++
Write-Progress -Activity "Transforming Audio" -Status $audioFile.Name -PercentComplete (($i/@($audioFiles).length) * 100)
& 'C:\Program Files (x86)\sox-14-4-0\sox.exe' "$audioFile" ('Fast/' + $audioFile.Name) -S -G tempo -s 1.3
}
Write-Progress -Activity "Transforming Audio" -PercentComplete 100 -Completed
[void] [Reflection.Assembly]::LoadWithPartialName(“System.Windows.Forms”)
[windows.forms.messagebox]::show(“All done!”)
它仍然是推离的顶部安慰。我曾想过把输出重定向到一个文件,但是SoX显示了每个文件的进度,所以它正在执行我想要的每个文件进度,而'Write-Progress'则提供了整体进度。 – bdukes
抱歉,我不了解您的需求,您是否关心sox的输出?你有样品吗? –
是的,我确实希望看到SoX输出(它是动态更新进度信息)。输出看起来像https://gist.github.com/4118739 – bdukes