0

csv ファイルをインポートする必要があり、条件を直接 foreach に入れたい。つまり :

csv を読み取るには、次のようにします (はい、区切り文字は \ です):

$csv = Import-Csv -Delimiter \ -Path $mypath -Header 'column1', 'column2', 'column3'

それから私は:

foreach($line in $csv)
{
#Actions
}

私がやりたいことですが、それが可能かどうかわかりません:

for($i =1; $i -lt $myarray.Length; $i++)
{
   foreach($line in $csv) | Where $line.column2 -eq $myarray[$i]
   {
      #Actions only if $line.column2 is equal to $myarray[$i]
   }
}

だから私は内部に名前を持つ配列を取得しました。そして、csv の列が配列の情報と一致する場合にのみ、#Actions を実行したいと考えています。そうでない場合は、$csv の $line を変更したいと考えています。

私が書いたアイデアは非常に重く見えますが、これを行うためのより良い、より高速な (より難しく、より強力な #DaftPunk) 方法があると思います。

誰かが以前にこれを使用したことがある場合は、私に知らせてください:)

前もって感謝します、

ニコ。

PS : 私の英語で申し訳ありません;)

編集: if 条件を実行できることに気付きました:

for($i =1; $i -lt $myarray.Length; $i++)
{
   foreach($line in $csv)
   {
      if($line.column2 -eq $myarray[$i]
      {
         #Actions
      }
   }
}

しかし、私はまだそれを考えています: | #Conditions の方が優れているところ ...

4

1 に答える 1

1

ループ内で IF を使用できます。一般的なアプローチは次のとおりです。

Import-Csv ... | Foreach-Object{

   if(something)
   {
      #do something with the current object and write it back to the pipeline
      $_ = ...
      $_
   }
   else
   {
      # write the object back to the pipeline
      $_
   }
}
于 2013-06-28T08:59:31.390 に答える