在我的脚本的某个地方,我正在写一个文件夹结构到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]中的输出?
答案 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)