0
每天我都會獲得許多需要導入系統的CSV文件。但在我可以導入它們之前,我需要將它們全部編碼爲UTF-8,然後逐個上傳它們。這就是爲什麼我需要一個腳本,它將所有* .csv文件編碼爲UTF-8,然後將它們合併到一個文件中。Out-File製表符分隔文件問題
該腳本工作正常,但是當我導出該文件時,第一個選項卡已被刪除,這是一個大問題。
它是如何被編碼和合並前一個文件如下:
USERID ACTIVE FIRSTNAME LASTNAME EMAIL LANGUAGE HOSTPRIVILEGE TIMEZONE DIVISION DEPARTMENT PROJECT OTHER CUSTOM5 CUSTOM6 CUSTOM7 CUSTOM8 CUSTOM9 CUSTOM10 COUNTRY
Y <firstname> <lastname> <[email protected]> de <text> <text> <randomnumber>
(它看起來像,#2不喜歡選項卡或IM只是noobish ..:?S)
其實第二行從一個標籤開始,然後每個「塊」由一個標籤分隔。除最後一個之外,「text」和「randomnumber」之間有7個選項卡。
當我運行該腳本,它看起來像這樣:
USERID ACTIVE FIRSTNAME LASTNAME EMAIL LANGUAGE HOSTPRIVILEGE TIMEZONE DIVISION DEPARTMENT PROJECT OTHER CUSTOM5 CUSTOM6 CUSTOM7 CUSTOM8 CUSTOM9 CUSTOM10 COUNTRY
Y <firstname> <lastname> [email protected] de <text> <text> <randomnumber>
Y <firstname> <lastname> [email protected] de <text> <text> <randomnumber>
第一個選項卡丟失。
這裏是PowerShell腳本:
Copy-Item ".\1_Input\*.csv" ".\2_cache"
Get-ChildItem ".\2_Cache\*.csv" | foreach {
(Get-Content $_.FullName) | Set-Content $_.FullName -Encoding UTF8
}
ls ".\2_cache" -Fi *.csv | ipcsv |
ConvertTo-Csv -NoTypeInformation |
% { $_ -replace '"', ''} |
Out-File ".\3_output\concat.csv" -fo -en utf8
Remove-Item ".\2_cache\*.csv"
編輯:我發現了一個「解決辦法」,我加了參數
ipcsv -delimiter "`t"
,但我得到錯誤,當我的參數添加到的ConvertTo -CSV。所以現在用分隔符「,」輸出。但系統幸好能夠讀取導入它也逗號分隔。
謝謝,這工作完美!我將最終的腳本「轉換」爲.exe,因此即使是「傻瓜」也應該可以使用它。但隨後卡巴斯基反病毒軟件將其識別爲木馬,哈哈。該死的。也許我會留在.ps1腳本.. 編輯:我用PS2EXE「轉換」腳本,如果有人想知道.. – Shunator
嘗試使用PowerGUI(免費),也許你會更好地繞過卡巴斯基。在某種程度上,還必須有一個白名單系統。 – sodawillow