C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Powershellで読み取ったCSVデータの値を比較したい


(過去ログ 137 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■80559 / inTopicNo.1)  Powershellで読み取ったCSVデータの値を比較したい
  
□投稿者/ 山田 (1回)-(2016/07/27(Wed) 15:45:36)

分類:[.NET 全般] 

Powershell V3についてお教え頂けませんでしょうか。環境はWindows7 Pro 32bitです。

CSVファイルを読み込んで値の比較をしたいと思っています。
読み込むCSVは下記のようになっています。

headerName1,headerName2
10,x
20,y

やりたい事は、10と20の値を比較したいと思っています。そこで書いたコードは下記になります。

$csvfile = Import-Csv -Path $filename -Encoding Default
$data = $csvfile | Select-Object "headerName1" -First 2

if([int]$data[0] -gt [int]$data[1]){
Write-Host "yes"
}else{
Write-Host "no"
}

実行した結果、「値 "@{headerName1=10}" を型 "System.Int32" に変換できません。」とメッセージが表示されました。
$data[0]はオブジェクトなので、int型にキャストしないと比較ができないと思ったのでキャストをしたのですが、どのようにすれば値の比較ができるようになるのでしょうか?
よろしくお願い致します。
引用返信 編集キー/
■80560 / inTopicNo.2)  Re[1]: Powershellで読み取ったCSVデータの値を比較したい
□投稿者/ 魔界の仮面弁士 (788回)-(2016/07/27(Wed) 16:01:49)
No80559 (山田 さん) に返信
> if([int]$data[0] -gt [int]$data[1]){

if([int]$data[0].headerName1 -gt [int]$data[1].headerName1){

あるいは

if(($data[0].headerName1 -as [int] -gt ($data[1].headerName1 -as [int])){

でどうでしょう。
引用返信 編集キー/
■80561 / inTopicNo.3)  Re[2]: Powershellで読み取ったCSVデータの値を比較したい
□投稿者/ 魔界の仮面弁士 (789回)-(2016/07/27(Wed) 16:30:30)
No80560 (魔界の仮面弁士) に追記
> if([int]$data[0].headerName1 -gt [int]$data[1].headerName1){

$data = [int[]]($csvfile | Select-Object -First 2).headerName1
if($data[0] -gt $data[1]){

の方が手っ取り早いかも。
引用返信 編集キー/
■80574 / inTopicNo.4)  Re[3]: Powershellで読み取ったCSVデータの値を比較したい
□投稿者/ 山田 (2回)-(2016/07/27(Wed) 20:05:30)
魔界の仮面弁士 さん

お教え頂きました、「 $data[0].headerName1 」という方法で値の比較をする事ができました。ネットで探していたのですが、見つからなくて大変助かりました。ありがとうございます!

[int[]]($csvfile | Select-Object -First 2).headerName1 というやり方も絶対に思いつかなかった方法です。重ね重ねありがとうございます!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -