【问题标题】:Powershell get-childitem output formattingPowershell get-childitem 输出格式
【发布时间】:2014-02-17 01:54:49
【问题描述】:

如何更改 powershell 输出的格式?
我正在运行这个:

cgi -Recurse K:\AppData\*.* -Filter *.model | ? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | sort LastWriteTime -descending >> C:\AAA\result.txt

我得到的结果是这样的格式:

Directory: K:\AppData\


Mode                LastWriteTime     Length Name                                                                                                                                                                                                  
----                -------------     ------ ----                                                                                                                                                                                                  
-a---        13/02/2014  11:29 AM    7269129 20-300_3001_REV02_ECR4431.CATPart 
-a---        13/02/2014  11:29 AM    7269129 20-300_3001_REV02_ECR4431.CATPart 
-a---        13/02/2014  11:29 AM    7269129 20-300_3001_REV02_ECR4431.CATPart

如何将输出格式更改为:

LastWriteTime           Name                                  Directory
-------------           ----                                  -----
 13/02/2014  11:29 AM   20-300_3001_REV02_ECR4431.CATPart     K:\AppData\
 13/02/2014  11:29 AM   20-300_3001_REV02_ECR4431.CATPart     K:\AppData\
 13/02/2014  11:29 AM   20-300_3001_REV02_ECR4431.CATPart     K:\AppData\

【问题讨论】:

  • 现在可以了,我的错......
  • 出了什么问题?

标签: windows powershell powershell-2.0 powershell-3.0


【解决方案1】:

我知道通常的答案是,不要使用 format-* cmdlet,因为输出不能真正被其他 cmdlet 使用,但是既然这是一个 formatting 问题,那么如何喜欢:

get-childitem -Recurse K:\AppData\*.* -Filter *.model | ? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | sort LastWriteTime -descending | format-table LastWriteTime, Name, Directory >> C:\AAA\result.txt

我能看到的唯一缺点是如果目录名称最终过长,您可能需要尝试在 format-table cmdlet 的末尾添加 -Wrap-AutoSize

如果这些都不能解决宽度问题(假设你甚至有一个),我找到了一个(页面)[http://poshoholic.com/2010/11/11/powershell-quick-tip-creating-wide- tables-with-powershell/] 关于创建非常宽的表,所以你最终可能会得到类似的东西:

get-childitem -Recurse K:\AppData\*.* -Filter *.model | ? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | sort LastWriteTime -descending | format-table LastWriteTime, Name, Directory -AutoSize | Out-String -Width 1024 >> C:\AAA\result.txt

【讨论】:

    【解决方案2】:

    您可以使用Select-Object(选择)重新排序属性:

    gci -Recurse K:\AppData\*.* -Filter *.model | 
    ? {$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | 
    sort LastWriteTime -descending |
    Select LastWriteTime,Name,Directory
    

    【讨论】:

    • 感谢 cmets,但它不起作用.....我已经尝试过 select-object.... 结果还是一样....
    • 你能把脚本贴在你试过的地方吗?我从没见过这样不行。
    • 我尝试了您在上面发布的相同代码,它给了我相同的结果。格式根本不会改变。我在想我可能不得不使用 css 文件来处理它,我不想让它太复杂......
    • 我无法重现该结果。
    • 选择在我的盒子上对我有用,尽管由于我使用更长的路径作为测试,该目录被截断了......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    相关资源
    最近更新 更多