如何在Powershell中获得前导空格而不是零?

时间:2015-02-05 13:13:54

标签: powershell

在我的脚本的某个地方,我正在写一个文件夹结构到Host,每个文件夹中的文件数量为[1]:

$FolderName = "BAR"
$ItemCount  = "{0:000}" -f 7

Write-Host $ItemCount $FolderName

会输出类似[2]的内容:

007 BAR
044 BAZ
311 FOO

我真正想要的是[3]:

  7 BAR
 44 BAZ
311 FOO

我不想使用自定义的Powershell对象,因为它会在控制台的整个宽度上输出[4]:

Folder                                                       Itemcount
------                                                       ---------
BAR                                                                  7
BAZ                                                                 44
FOO                                                                311

我想输出像[5]:

Folder   ItemCount
------   ---------
BAR              7
BAZ             44
FOO            311

如此接近使得它更具可读性。但我选择我的解决方案(来自FolderName的ItemCount)作为第二个最佳选择,因为我无法使其工作。

如何获得[3]或[5]中的输出?

2 个答案:

答案 0 :(得分:3)

所以有几种方法可以解决这个问题。取决于您对最终结果的处理方式。使用-Format参数的对齐选项(5 places

gci c:\temp *.csv | ForEach-Object{
    "{0,5} {1}" -f $_.Length, $_.Name
}

或者也许是字符串方法.PadLeft()。以下两个示例都应生成相同的输出。可读性可能会受到影响。请注意,.PadLeft()是一种字符串方法。在我的示例中,我使用length int,因此我们必须转换为字符串。

"$(([string]($_.Length)).PadLeft(5)) $($_.Name)"
"{0} {1}" -f ([string]($_.Length)).PadLeft(5),$_.Name

现在......也许你只是想与Format-Table合作,以获得更好的屏幕输出效果。只需要以另一种方式使用我的第一个例子

gci c:\temp *.csv | Select-Object @{Name="Length";Expression={"{0,5}" -f $_.Length}}, Name | Format-Table -AutoSize

答案 1 :(得分:0)

$ItemCount=($Count.ToString()).PadLeft(3)