2016-12-02 56 views
1

作爲Powershell的新手,我設法將腳本集中在一起。 這已經準備了CSV,我知道,下面的文件的預覽:我想添加一個增量編號到現有的CSV Powershell

"Documentnummer","Versie","Status","Geocode","IDS datum","Documentgroep (Omsch)","Documenttype (Wrd)","Tekeningnummer" 
"550165","C","AB","008","19.07.2013","Themalagen OI","KS","008KS10" 
"550164","I","AB","008","26.03.2016","Themalagen OI","KS","008KS09" 
"550163","D","AB","008","19.07.2013","Themalagen OI","KS","008KS08" 

這正好爲約2000行。 現在,我使用它來下載文件,下載時使用相同的csv創建文件名。 這裏是問題,我想創建和額外的列,頭,例如'Nummer'包含每行增加的數字;

Nummer 0001, 0002, 0003, ...., 0050, ...., 0105, ...., 2547 

我總是希望四位數字,所以它看起來是這樣的:

"Nummer","Documentnummer","Versie","Status","Geocode","IDS datum","Documentgroep (Omsch)","Documenttype (Wrd)","Tekeningnummer" 
"0001","550165","C","AB","008","19.07.2013","Themalagen OI","KS","008KS10" 
"0002","550164","I","AB","008","26.03.2016","Themalagen OI","KS","008KS09" 
... 
"0108","550163","D","AB","008","19.07.2013","Themalagen OI","KS","008KS08" 

我嘗試了兩種方式,並都失敗,創建一個遞增的數字它的加入到CSV和創建與一個CSV正確的數字,併合並兩個csv的。

幫助表示讚賞! (以及荷蘭的頭名對不起)

在Windows 7 64位系統中使用PowerShell 3.0

更新,代碼我用兩個文件合併:

$drawinfo = Import-Csv $downloads\${drawtype}_DIR_AUTO_FILTER.csv | ConvertTo-Csv -NoTypeInformation 
$numberinfo = Import-Csv "$BBKSDIR\Related files\Incremental_number.csv" | ConvertTo-Csv -NoTypeInformation 

第一個包含大量數據,第二個只包含數字。

[array]$allinfo = "{0},{1}" -f $numberinfo[0],$drawinfo[0] 
[array]$allinfo += "`r`n{0},{1}" -f $numberinfo[1],$drawinfo[1] 
$allinfo 

在這裏,我第一次拿到這兩個文件的標題行,第二行中我希望得到所有其他行,但我只獲得了第2行(第1個數據行)。

執行$ allinfo現在讓我:

「Nummer」, 「Documentnummer」, 「Versie」, 「狀態」, 「地理編碼」, 「IDS數據」, 「Documentgroep(Omsch)」,」 Documenttype(Wrd)「,」Tekeningnummer「 」0001「,」550165「,」C「,」AB「,」008「,」19.07.2013「,」Themalagen OI「,」KS「,」008KS10「

+0

你能分享任何你已經嘗試到現在的代碼? –

+0

正如你可以在更新中看到的,我親近(或者我想成爲:))。 這個數字是作爲第一列添加的,第一個數據行正是我想要的,第一列數字是四位數,但是對於所有其他行都應該這樣。 –

回答

0

像這樣的東西應該給你一個關於如何做到這一點提示:

$csv = Import-Csv "D:\temp\test.csv" 
$global:i = 0; $csv | Select-Object @{ Name = 'Nummer'; Expression = { $global:i.ToString("0000"); $global:i += 1 } }, * | Export-Csv "D:\temp\test2.csv" 

這是基於計算的屬性。

+0

對不起。我認爲這是一個錯字 – Matt

0

試試這個

$script:cpt=0 
import-csv "C:\temp10\report.csv" | 
      select @{N="Nummer";E={$script:cpt++;"{0:d4}" -f $script:cpt}}, * | 
         export-csv "C:\temp10\report2.csv" -NoTypeInformation 
+1

與響應波紋管有什麼區別? –

+0

沒有什麼區別,不要冒犯你,只是另一種方法,格式化nummer並使用$ script vs $ global,+ ++在性能上更好,我優先考慮格式以獲得更好的可見性,但-NoTypeInformation很重要(你有忘記了) – Esperento57