在一个固定宽度和对齐格式中,显示输出多行文本,要求每一列的输出必选具有固定的宽度。格式化操作符可以设置固定宽度输出。
下面的例子通过DIR返回个目录的中的文件列表,然后通过循环输出,文件名和文件大小,因为文件的名字和大小都是不确定的,长度不一样,所以结果拥挤粗糙,可读性差。
PS > dir | ForEach-Object { "$($_.name) = $($_.Length) Bytes" } .android = Bytes .VirtualBox = Bytes CMB = Bytes Contacts = Bytes Desktop = Bytes Documents = Bytes Downloads = Bytes Favorites = Bytes funshion = Bytes Links = Bytes Podcasts = Bytes Roaming = Bytes Saved Games = Bytes Searches = Bytes SkyDrive = Bytes Tracing = Bytes Virtual Machines = Bytes VirtualBox VMs = Bytes a = 12022 Bytes a.csv = 986 Bytes a.ps1 = 18 Bytes a.txt = 946 Bytes funshion.ini = 6798 Bytes PUTTY.RND = 600 Bytes
下面固定列宽的结果,就显得可读性强了。要设置列宽可以将一个逗号放置在通配符与列宽编号的中间,负数设置右对齐,正数设置左对齐。
PS> dir | ForEach-Object { "{0,-20} = {1,10} Bytes" -f $_.name, $_.Length } Virtual Machines = Bytes VirtualBox VMs = Bytes a = 12022 Bytes a.csv = 986 Bytes a.ps1 = 18 Bytes a.txt = 946 Bytes funshion.ini = 6798 Bytes PUTTY.RND = 600 Bytes .....
引用链接:outputting values in tabular form fixed width
本文链接: https://www.pstips.net/outputting-values-in-tabular-form-fixed-width.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
这似乎一切美好,但是如果有中文,排版又乱了,它一个中文也是算一个字符的,你可以试试,我还没解决好这个问题。
中文没找出办法来。
请教一个问题,在Write-Host中貌似使用不了-f参数,比如我使用下面的语句打印变量
Write-Host “{0}’t{1}’t{3}” –f $data1,$data2,$data3
ps似乎把-f识别成了ForegroundColor的缩写,会报错,请教下该如何写这个格式化语句呢?
环境是ps4.0
非常感谢
Write-Host (“{0}’t{1}’t{2}” -f $data1,$data2,$data3)
多谢博主