如何在 Powershell 中获取前导空格而不是零?
How to get leading spaces instead of zeros in Powershell?
在我的脚本中的某个地方,我正在为主机编写一个文件夹结构,其中包含每个文件夹中的文件数 [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] 中的输出?
所以有几种方法可以解决这个问题。取决于你对最终结果所做的事情。使用 -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
$ItemCount=($Count.ToString()).PadLeft(3)
在我的脚本中的某个地方,我正在为主机编写一个文件夹结构,其中包含每个文件夹中的文件数 [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] 中的输出?
所以有几种方法可以解决这个问题。取决于你对最终结果所做的事情。使用 -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
$ItemCount=($Count.ToString()).PadLeft(3)