Regex 格式化从正则表达式中提取的数字
我尝试了多种方法来格式化一个数字并将其转换为KB,但它不起作用,可以使用正确格式/方法的帮助来执行此操作Regex 格式化从正则表达式中提取的数字,regex,powershell,filesize,Regex,Powershell,Filesize,我尝试了多种方法来格式化一个数字并将其转换为KB,但它不起作用,可以使用正确格式/方法的帮助来执行此操作 ((robocopy $Root NULL $Filter $params)) | ForEach { If ($_ -match "(?<Size>\d+)\s(?<Date>\S+\s\S+)\s+(?<FullName>.*)") { $Report += New-Obj
((robocopy $Root NULL $Filter $params)) | ForEach {
If ($_ -match "(?<Size>\d+)\s(?<Date>\S+\s\S+)\s+(?<FullName>.*)")
{
$Report += New-Object PSObject -Property @{
Size = "{0:N1}" -f $matches.Size / 1KB
#Size = [System.Math]::Round(([long]$matches.Size / 1KB), 2)
Date = [datetime]$matches.Date
FullName = $matches.FullName
}
}
((robocopy$Root NULL$Filter$params))| ForEach{
如果($匹配“(?\d+)\s(?\s+\s\s+)\s+(?*)”)
{
$Report+=新对象PSObject-属性@{
Size=“{0:N1}”-f$matches.Size/1KB
#Size=[System.Math]::四舍五入(([long]$matches.Size/1KB),2)
日期=[datetime]$matches.Date
FullName=$matches.FullName
}
}
这两种方法都返回以字节为单位的大小,而不进行任何文件大小转换。
-f
优先于/
,因此您最终得到以下结果:
("{0:N1}" -f $matches.Size) / 1KB
将第二个操作嵌套在括号中,它将起作用:
Size = "{0:N1}" -f ($matches.Size / 1KB)
感谢@Mathias R.Jessen的输入。事实上,我发现了这个问题,并且承认我在另一个位置有相同的代码行,这是基于条件的。我想我需要开始构建一些函数调用,这样我就不会再这样做了。相关帮助主题: