2016-11-10 9 views
0

私は5列のcsvファイルを持っています。最後の列は生徒レベルです。私がしたいのは、その欄の値を校正レベルに基づいて変更することです。たとえば、校正レベルが12の場合は、それを2016に、11を2017に、などに変更したいと考えています。powershellを使用して列の値を変更します

アップデート:私は、以下を使用して半仕事にそれを手に入れた:学生証は、その中に12を持っている場合

Get-Content users.csv | ForEach-Object -Process {$_ -replace '12','2016'} | Set-Content users1.csv 

何が起こることは2016例にも同様に変更されますつまりは120045になります変更を取得20160045

+0

これまでに何を試しましたか?また、CSV **と**の予想結果を共有してください。 –

答えて

0

にあなたはforeachの中で、ループそれをcsvファイルをインポートし、CSVする$ _(本)オペレータおよびエクスポート・イストを使用することができます

Somesthingのような:

# import CSV 
$list = import-csv P:\ath\to\file.csv -Delimiter ";" -Encoding Standard 
# % means foreach 
$list | % { 
    # The grades is the key for each line 
    # the first line of your csv represent the keys you can use 
    # e.g. first colum: Name | Grade | Class 
    # $_.Name | $_.Grade | $_.Class are your keys for every entry (2nd line and above) 

    # here you can work with your grades an do what you want 
    if($_.Grade -eq 11){ 
    # set a new value to the grade in the actual line 
    $_.Grade = 2016 
    } 
} 

# now export the new list into csv 
export-csv P:\ath\to\new.csv -Delimiter ";" -NoTypeInformation 

これは基本的なものです。

Greetz Eldo.O

+0

コマンドパイプラインの位置1でコマンドレットExport-Csvを取得しています InputObject: –

0

Eldo you made great。私も文は私が必要な正確に何を達成する場合は、よりを追加することができました

$list | Export-Csv P:\ath\to\new.csv -Delimiter "," -NoTypeInformation 

export-csv P:\ath\to\new.csv -Delimiter ";" -NoTypeInformation 

:私から最後の行を変更する必要がありました。

+0

oh - 私は忘れました:D - 私はrunspace内のコードをチェックしませんでした。しかし、見てうれしい、それはあなたのために働いている。 –

関連する問題