使用powershell

时间:2016-11-10 13:26:47

标签: powershell

我有一个包含五列的csv文件。最后一栏是学生年级。我想要做的是根据gradelevel更改该列的值。例如,如果等级为12,我想将其更改为2016年,11至2017年,依此类推。

更新:我确实使用以下内容进行半工作:

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

如果学生ID中有12个也会被更改为2016年,会发生什么情况。例如120045会更改为20160045

2 个答案:

答案 0 :(得分:0)

你可以导入csv,在foreach中循环它并使用$ _(this)运算符然后将ist导出到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

答案 1 :(得分:0)

Eldo你的代码很棒。我必须改变最后一行:

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

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

我还能够添加更多if语句来完全满足我的需要。