找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18288|回复: 2

[问题求助] PowerShell读取文件内容后如何转换成表格并判断属性的值?

[复制链接]
发表于 2017-7-13 19:58:15 | 显示全部楼层 |阅读模式
1.txt内容如下:
  1. DeviceID                 VolumeName                        FreeSpace(GB)                   Free(%)
  2. --------                 ----------                        ---------------                 --------
  3. C:                       C                                              47                       15
  4. D:                       D                                             207                       55
复制代码
Get-Content 1.txt 之后如何转换成表格呢?

因为后面我想判断:
每个分区的FreeSpace(GB)是否小于50
每个分区的Free(%)是否大于30
发表于 2017-7-13 21:26:09 | 显示全部楼层
本帖最后由 qazplm 于 2017-7-13 23:07 编辑

table只是输出格式,原始对象才是ps方便操作的,不知你的txt内容怎么来,但从内容看原本应该就能被ps直接处理,弄成txt再转对象,除非是特殊文本,如csv、xml、json等,否则并不能简单的转换
方法一,转为对象
  1. $list=@();
  2. $t='DeviceID','VolumeName','FreeSpace','Free';
  3. gc '文本.txt'|Select-Object -skip 2|%{
  4.          $a=$_.trim() -split '\s+';
  5.          $b=New-Object Object;
  6.          0..3|%{Add-Member -inputObject $b -memberType NoteProperty -name $t[$_] -value $a[$_]}
  7.          $list+=$b;
  8. }
  9. $list
复制代码
方法二,以原始对象
  1. gwmi win32_logicaldisk -filter "DriveType=3" |format-table -autosize @{exp={$_.DeviceID};Lab="DeviceID"},@{exp={$(if($_.VolumeName){$_.VolumeName}else{$_.DeviceID[0]})};Lab="VolumeName"},@{exp={"{0:n0}" -f ($_.FreeSpace/1gb)};Lab="FreeSpace"},@{exp={"{0:n0}" -f ($_.FreeSpace/$_.Size*100)};Lab="Free"}
复制代码
方法三,直接处理txt
 楼主| 发表于 2017-7-14 09:28:01 | 显示全部楼层
回复 2# qazplm


感谢。我没办法控制1.txt的生成,先试试第一种方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:25 , Processed in 0.017192 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表