我似乎无法将.csv中的分隔符从;
更改为,
。
问题是,由于区域设置,我们的海外客户之一的默认分隔符为;
,但我们的系统需要,
分隔符。
我无法使用-replace
,因为某些字符串条目中有分号需要保留在那里。
以下是我尝试的选项:
Import-Csv -path $home\ | Export-Csv C:\Users\Dean\Desktop\test.csv -useculture
Import-Csv -path $home | Export-Csv C:\Users\Dean\Desktop\test\test.csv -Delimiter ","
Import-Csv -path $home | Export-Csv C:\Users\Dean\Desktop\test.csv -Replace "^\"|\"$", ""
我也试过
Import-Csv -UseCulture | ConvertTo-Csv | Out-File and Import-Csv -Delimiter | ConvertTo-Csv | Out-File
这些选项都不会丢失错误,但在再次检查csv时分隔符仍为;
。我唯一看到这些args工作的时候是将csv导出或输出到没有-delimiter
或-useculture
arg的位置。
答案 0 :(得分:3)
使用创建csv;作为分隔符:
Get-ChildItem c:\ | Select-Object FullName, Name, LastWriteTime |Export-Csv c:\temp\test.csv -Delimiter ';' -notypeinformation
csv示例:
"FullName";"Name";"LastWriteTime"
"C:\APP-V_Global";"APP-V_Global";"8/5/2013 12:45:04 PM"
"C:\Program Files";"Program Files";"10/4/2017 7:48:06 AM"
"C:\Program Files (x86)";"Program Files (x86)";"10/10/2017 1:44:51 PM"
"C:\Temp";"Temp";"12/5/2017 1:29:34 PM"
"C:\Users";"Users";"9/6/2017 8:30:00 AM"
"C:\Windows";"Windows";"11/17/2017 4:16:43 PM"
导入csv告诉powershell分隔符是什么:
$imported = Import-Csv c:\temp\test.csv -Delimiter ';'
示例输出:
$imported
FullName Name LastWriteTime
-------- ---- -------------
C:\APP-V_Global APP-V_Global 8/5/2013 12:45:04 PM
C:\Program Files Program Files 10/4/2017 7:48:06 AM
C:\Program Files (x86) Program Files (x86) 10/10/2017 1:44:51 PM
C:\Temp Temp 12/5/2017 1:29:34 PM
C:\Users Users 9/6/2017 8:30:00 AM
C:\Windows Windows 11/17/2017 4:16:43 PM
将信息导出:
$imported | Export-Csv C:\temp\test.csv -delimiter ',' -notypeinformation
文件包含:
"FullName","Name","LastWriteTime"
"C:\APP-V_Global","APP-V_Global","8/5/2013 12:45:04 PM"
"C:\Program Files","Program Files","10/4/2017 7:48:06 AM"
"C:\Program Files (x86)","Program Files (x86)","10/10/2017 1:44:51 PM"
"C:\Temp","Temp","12/5/2017 1:29:34 PM"
"C:\Users","Users","9/6/2017 8:30:00 AM"
"C:\Windows","Windows","11/17/2017 4:16:43 PM"
基本过程有效,所以我想知道你的输入文件是否是问题。如果这不起作用,请考虑清理并发布样本csv。