我有大量 CSV 記錄,其中包含需要重新格式化的日期列。源檔案中的格式為“MM/dd/yyyy hh:mm”。我需要更改為“yyyy-MM-dd”的格式。我嘗試了一些不同的東西,我已經能夠讓這兩部分作業(匯入和轉換,或匯出),但不能同時使用。
樣本資料
Date Created,ID,Email Address,First Name,Last Name
3/15/2019 14:56,some-string,email@address.com,first,last
3/15/2019 13:56,some-string,email@address.com,first,last
匯入和轉換(使用 Write-Host 確認重新格式化)
Import-Csv .\foo.csv |
ForEach-Object {
$_."Date Created" = [datetime]::Parse($_."Date Created").ToString('yyyy-MM-dd')
Write-Host $_."Date Created"
}
匯入和匯出(無轉換)
Import-Csv foo.csv |
Select-Object "Date Created", ID, "Email Address", "First Name", "Last Name" |
Export-Csv -NoTypeInformation foo-new.csv
我已經嘗試將這兩個部分結合起來,但最終得到一個空的 CSV 檔案
Import-Csv foo.csv |
ForEach-Object {
$_."Date Created" = [datetime]::Parse($_."Date Created").ToString('yyyy-MM-dd')
} |
Select-Object "Date Created", ID, "Email Address", "First Name", "Last Name" |
Export-Csv -NoTypeInformation foo-new.csv
任何幫助將它們粉碎在一起,以便我重新格式化和成功匯出,將不勝感激。
uj5u.com熱心網友回復:
您需要使用計算屬性 Select-Object
嘗試
Import-Csv foo.csv |
Select-Object @{Name = 'Date Created'; Expression = { '{0:yyyy-MM-dd}' -f [datetime]$_.'Date Created' }},
* -ExcludeProperty 'Date Created' |
Export-Csv -NoTypeInformation foo-new.csv
uj5u.com熱心網友回復:
最簡單的方法是使用計算屬性:
Import-Csv -Path C:\users\Abraham\Desktop\csvDate.csv |
Select-Object -Property @{
Name = "DateCreated"
Expression = {
([datetime]$_."Date Created").ToString("yyyy-MM-d")
}
}, ID, "Email Address", "First Name", "Last Name" # | Export-Csv ...
至于你嘗試了什么。. .您基本上是在通過管道傳輸時取消選擇Foreach-Object所有屬性,然后嘗試選擇尚不存在的屬性;因此為什么你得到一個空的csv。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/416699.html
標籤:
上一篇:字串操作-Powershell
