tim*_*11g 4 powershell text formatting
我找到了一个我认为可以适应我的目的的 PowerShell 脚本。
它包含格式化输出的这一行:
$largeSizefiles = get-ChildItem -path $filesLocation -include $Extension -recurse -ErrorAction "SilentlyContinue" | ? { $_.GetType().Name -eq "FileInfo" } | where-Object {$_.Length -gt $fileSize} | sort-Object -property length | Select-Object Name, @{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}},@{Name="LastWriteTime";Expression={$_.LastWriteTime}},@{Name="Path";Expression={$_.directory}} -first $filesLimit
Run Code Online (Sandbox Code Playgroud)
关键部分似乎是这样的:
Select-Object Name, @{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}},@{Name="LastWriteTime";Expression={$_.LastWriteTime}},@{Name="Path";Expression={$_.directory}} -first $filesLimit
Run Code Online (Sandbox Code Playgroud)
我已经阅读了关于 Select-Object 的 ss64.com 教程,但我没有找到任何内容来解释 @{.....} 表单的表达式如何格式化文本。
该ss64.com上@操作显示它的格式页@(...),有括号,括号没有。
上面的代码导致以下输出:
Name : RPI-Image-1-Copy.img
Size In MB : 29,477
Path : D:\VirtualDriveShare
LastWriteTime : 8/18/2015 6:27:51 PM
Run Code Online (Sandbox Code Playgroud)
我熟悉多种编程语言,但这对我来说并不明显,而且我还没有在网上找到任何明确的解释。谁能指点我一个好的教程?
Select-Object 可以为每个项目使用标题/值的哈希表。在这个例子中:
Select-Object Name, @{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}} ...
Run Code Online (Sandbox Code Playgroud)
脚本选择 Name,然后选择从当前管道对象的 Length 参数派生的“以 KB 为单位的名称”。
通过首先将其除以 1024 然后使用 {0:N0} 来显示它来进一步格式化。
Powershell 使用 .Net 字符串格式语法进行显示 - 在这种情况下 {0:N0} 转换为:
// N or n (Number): It represent how many decimal places of zeros to show.
String.Format("{0:N4}", pos); //”10.0000?
Run Code Online (Sandbox Code Playgroud)
您可能想看看 Kathy Kam 的 Format 101 和 Format 102 文章:
https://blogs.msdn.microsoft.com/kathykam/2006/03/29/net-format-string-101/
https://blogs.msdn.microsoft.com/kathykam/2006/09/29/net-format-string-102-datetime-format-string/
有关字符串格式的更多详细信息。
| 归档时间: |
|
| 查看次数: |
2060 次 |
| 最近记录: |