我正在尝试使用PowerShell进度条,但-status参数未按公布的方式工作(或者我错误地阅读了文档)。
为了简单起见,假设我有一个集合:
@("red", "green", "blue")
...我有另一种方法可以迭代这个集合。但是当它迭代时,处理需要很长时间。所以我想通过在循环中调用进步栏($i,$s)
来给用户状态。
这是进步的代码。
function progressBar ($count, $color) {
Write-Progress -Activity "My Progress Bar" -status "Doing stuff on $color" -percentComplete ($count / $totalItems * 100)
}
这与:
https://blogs.technet.microsoft.com/heyscriptingguy/2011/01/29/add-a-progress-bar-to-your-powershell-script/
作者使用此示例的地方:
-status "Found Service $i"
但是当我运行我的脚本时,在“在上面做东西”之后什么也没有显示——它是空白的!
我一直认为是PS中的连接。。。但是这样做-状态“在“$color
上做东西”也失败了!
在发布之前,我读了这个:
如何在PowerShell中连接字符串和变量?
... 使用$($color)
的建议会使cmdlet一起失败。
那么,我怎样才能让我的整个字符串显示在状态中,而不是删除$颜色部分?
谢谢!
===================================================
你好再次...我将在下面的@BenH和@Peristent13的注释中添加完整的代码。
$a = @("red", "green", "blue")
$counter = 1
$totalItems = $a.Count
foreach ($color in $a) {
Write-Host $color "`n"
Start-Sleep -s 3
$counter += 1
progressBar $counter, $color
}
function progressBar ($i, $s) {
Write-Progress -Activity "My Progress Bar" -status "Doing stuff on $s" -percentComplete ($i / $totalItems * 100)
}
function progressBar ($Count, $color) {
Write-Progress -Activity "My Progress Bar" -CurrentOperation "Doing stuff on
$color" -percentComplete ($Count / $totalItems * 100)
}
$a = @("red", "green", "blue")
$counter = 0
$totalItems = $a.Count
foreach ($color in $a) {
Write-Host $color "`n"
progressBar -Count $counter -color $color
Start-Sleep -s 3
$counter += 1
}
所以我无法解释为什么-State
没有显示变量中的数据。但是回顾我所有的进度条,我从未使用过它。使用-MONTOP
显示条形图上的变量内容。你有一些语法错误。
下面是一个使用较少修改版本的代码的工作示例。有一些问题需要解决。
首先,让我们看看“新”代码。
function progressBar ($i, $s,$totalItems) {
Write-Progress -Activity "My Progress Bar" -status "Doing stuff on $s" -percentComplete ($i / $totalItems * 100)
}
$a = @("red", "green", "blue")
$counter = 0
$totalItems = $a.Count
foreach ($color in $a) {
Write-Host $color "`n"
Start-Sleep -s 3
$counter += 1
progressbar -i $counter -s $color -totalItems $totalItems
}
如您所见,状态及其颜色变量已正确显示。
但是在您的原始代码中有一些错误。
$totalItems
,但函数无法提供此功能。这不是一个好的实践,因为如果在另一次脚本中没有定义该变量,它将失败
-status“在“$color”上做事情将不起作用,而-status(“在“$color”上做事情)
将起作用。更简单的是,当使用双引号字符串时,自动展开功能将显示状态“Doing stuff on$color”
现在,虽然我提供给您的修改后的代码正在运行,但我建议进行一些其他改进。
另外,因为您使用的是$counter
变量,所以我个人选择了for循环而不是foreach,因此计数器嵌入时不需要额外声明。
另外,如果您有一个更大的数组,那么立即计算偏移量以优化代码是值得的。
function progressBar ($index,$Name, $Offset) {
$PercentComplete = 0
if ($index -gt 0) { $PercentComplete = $index * $Offset } # Avoid divide by 0 error for first item.
Write-Progress -Activity "My Progress Bar" -status "Doing stuff on $Name" -percentComplete ($PercentComplete)
}
$ColorArray = @("red", "green", "blue")
$Offset = 1 / $ColorArray.Count * 100 # Calculate one time only instead of each iterations of the loop.
# Because you use a counter, i'd use For instead of foreach.
for($i=0;$i -le $ColorArray.Count;$i++) {
$CurrentColor = $ColorArray[$i]
Write-Host $CurrentColor "`n"
Start-Sleep -s 3
progressbar -index $i -Name $CurrentColor -Offset $Offset
}
最后,我想我应该提一下<如果不使用-nonewline
开关参数,则code>Write host会自动追加新行。也许你想在那里多留一行,也许你不想。。。只是觉得值得一提。
本文向大家介绍MySQL查询在字符串中的特殊字符之前显示子字符串,包括了MySQL查询在字符串中的特殊字符之前显示子字符串的使用技巧和注意事项,需要的朋友参考一下 在MySQL中为此使用LOCATE()和SUBSTRING()方法。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出- 以下是在子字符串中的特殊字符之前显示子
问题内容: 上面的代码片段中的代码产生以下输出。 a =’Hello’和b =’Hello’的长度分别为6和6,equals()为false 虽然两者的价值,并在控制台上显示的是,回报。怎么样? 问题答案: 和是 不是 可打印字符。它们都是控制字符,它们决定了文本应如何呈现-从左到右或从右到左。 您不会在终端中看到它们,并且它们不应该是等效的字符串。
问题内容: 我想打印一个字符或字符串,例如’-‘n次。 我可以不使用循环就做吗? ..这意味着打印3次,如下所示: 问题答案: Python 2.x: Python 3.x:
我有代码在这里生成一个随机的名字给定音节点击一个动作按钮。但作为字符串currentName生成的名称会显示在TextView中。我需要使视图成为它自己的类吗?我是androidstudio的新手,来自eclipse,所以textviews对我来说也是新手。多谢了。 } 这也是我的activity_main.xml
编辑:我已经删除了用于out.write的for循环,它不是必需的。我在使用字符串数组时使用过它。
问题内容: 非常简单的问题,但是由于某种原因,在谷歌搜索10分钟后,我在任何地方都找不到答案。使用JavaScript打印时如何显示转义符? 例: 给出: 当我要它给: 问题答案: 如果你的目标是 并以字符串文字形式输出它包含的内容,您可以使用: 添加外引号(至少在Chrome的实现中),但是其中的内容是字符串文字(是的,这有点令人困惑)。 接受您提供的内容(在这种情况下为字符串),并返回包含该值