Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PowerShell控制台中捕获并打印7-Zip的提取进度_Powershell_Console_7zip - Fatal编程技术网

在PowerShell控制台中捕获并打印7-Zip的提取进度

在PowerShell控制台中捕获并打印7-Zip的提取进度,powershell,console,7zip,Powershell,Console,7zip,我有一个PowerShell脚本,除其他外,它使用7-Zip提取文件 "Starting decompression of [$filePath]..." & $7ZipPath "x" $filePath "-o$extractionPath" "-aos" | Out-Host 我一直在将主机切换到空主机,因为它看起来有点凌乱——我知道如果我添加-bsp1,我可以得到提取进度——但它每次引入7z,并将每个更新的百分比放在单独的行上,看起来有点凌乱 我的问题是:是否有任何方法可以捕获

我有一个PowerShell脚本,除其他外,它使用7-Zip提取文件

"Starting decompression of [$filePath]..."
& $7ZipPath "x" $filePath "-o$extractionPath" "-aos" | Out-Host
我一直在将主机切换到空主机,因为它看起来有点凌乱——我知道如果我添加
-bsp1
,我可以得到提取进度——但它每次引入7z,并将每个更新的百分比放在单独的行上,看起来有点凌乱


我的问题是:是否有任何方法可以捕获
-bps1
的进度百分比,并在控制台中以更紧凑的方式打印它-要么是一个进度条,要么只是一行带有更新百分比的文本?

我这样管理我想要的:

"Extracting [$filePath]..."
& $7ZipPath "x" $filePath "-o$extractionPath" "-aos" "-bsp1" | out-string -stream | Select-String -Pattern "\d{1,3}%" -AllMatches | ForEach-Object { $_.Matches.Value } | foreach {
    [System.Console]::SetCursorPosition(0, [System.Console]::CursorTop) 
    Write-Host "Progress:" $_ -NoNewLine
}

Out-Host
->
Write-Host-NoNewline
?如果它是一个普通的zip文件,另一种方法是显示一个进度条。前提是OP运行的是PowerShell v5或更高版本,也就是说。我猜Expand Archive对
.7z
文件不起作用。7z是7-zip自己的专有格式。是的,它可以工作,但是,如果该归档文件中已经有文件和文件夹(之前已解压缩),计数器将永远不会达到100%,因此您也必须解决这个问题。