dirコマンドの出力をカスタマイズ

目的

  • dirコマンドの出力は標準では以下のようになる。
  • ここではLengthの代わりにFileSizeという新しいファイルサイズを表すカラムにすることにする。
  • FileSizeは新しいType Dataで、1000バイトなら1KBと表示するような型とする。(UNIXのls -hみたいなもの)
     ディレクトリ: C:\tmp
 
 
 Mode                LastWriteTime         Length Name
 ----                -------------         ------ ----
 -a----       2017/02/12     19:22           4750 bar.txt
 -a----       2017/02/12     19:22              0 foo.txt
 -a----       2015/11/14     22:45          81711 baz.jpg

手順

1. Type Dataを作成する

 
 copy $PSHOME\FileSystem.format.ps1xml $Env:USERPROFILE\Documents\WindowsPowershell\MyFileFormat.format.ps1xml
 notepad $Env:USERPROFILE\Documents\WindowsPowershell\MyFileFormat.format.ps1xml
 <?xml version="1.0" encoding="utf-8" ?>
 <Types>
     <Type>
         <Name>System.IO.FileInfo</Name>
         <Members>
             <ScriptProperty>
                 <!-- Filesize converts the length to a human readable
                     format (kb, mb, gb, tb) -->
                 <Name>FileSize</Name>
                 <GetScriptBlock>
                     switch($this.length) {
                         { $_ -gt 1tb } 
                             { "{0,4:n2} TB" -f ($_ / 1tb) ; break }
                         { $_ -gt 1gb } 
                             { "{0,4:n2} GB" -f ($_ / 1gb) ; break }
                         { $_ -gt 1mb } 
                             { "{0,4:n2} MB " -f ($_ / 1mb) ; break }
                         { $_ -gt 1kb } 
                             { "{0,4:n2} KB " -f ($_ / 1Kb) ; break }
                         default
                             { "{0,4} B " -f $_}
                     }
                 </GetScriptBlock>
             </ScriptProperty>
         </Members>
     </Type>
 </Types>

参考

http://superuser.com/questions/468782/show-human-readable-file-sizes-in-the-default-powershell-ls-command


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS