2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« Import-CSVコマンドレットには、-Encodingパラメタがなく、文字化けする。 | トップページ | out-ie.ps1 PowerShellからHTMLをIEに流し込む。 »

2010年2月15日 (月)

view-csv.ps1 CSVファイルを表示する。

もし、Excelがあれば、Excelに関連付けされて、見れますが、もっと簡単に見る方法はないものか?

csvview.htaを使う方法もありますが、もし、PowerShellが入っていれば、簡単にGUI表示できます。

Get-Content CSVファイル | CovertFrom-CSV | Out-GridView

ただし、難点は、PowerShellコンソールが開くことと、PowerShellコンソールを閉じるとGUIも閉じることです。

例えば、

view-csv.ps1 CSVファイル...

foreach($arg in $args){
  get-content $arg|convertfrom-csv|out-gridview
}

PowerShellコンソールで、

PS > .\view-csv.ps1 a.csv

はよいけれど、これにCSVファイルをドロップしたり、コマンドプロンプトで、

> view-csv.ps1 a.csv

は、グリッドビューが開いて、すぐ閉じてしまいます。:-(

そこで、もし、GUIから起動されたら、コンソールを非表示にして、グリッドビューが閉じるのを待ち合わせします。
また、もし、コンソールから関連付けで起動されたときも、グリッドビューが閉じるのを待ち合わせします。

view-csv.ps1

$gui=[system.environment]::commandline -like "*$($myinvocation.mycommand.path)*"
if($gui -and ([System.Diagnostics.Process]::GetCurrentProcess().MainWindowHandle -ne 0)){
  powershell -windowstyle hidden -command exit
}
foreach($arg in $args){
  get-content $arg|convertfrom-csv|out-gridview
}
if($gui){
  while([System.Diagnostics.Process]::GetCurrentProcess().MainWindowHandle -ne 0){
    start-sleep 1
  }
}

これならおk。

« Import-CSVコマンドレットには、-Encodingパラメタがなく、文字化けする。 | トップページ | out-ie.ps1 PowerShellからHTMLをIEに流し込む。 »