将 csv 中的分隔符从 ; 更改为 到 ,

Alt*_* F4 4 powershell

我似乎无法将 .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 "^\"|\"$", ""
Run Code Online (Sandbox Code Playgroud)

我也尝试过

Import-Csv -UseCulture | ConvertTo-Csv | Out-File and Import-Csv -Delimiter | ConvertTo-Csv | Out-File
Run Code Online (Sandbox Code Playgroud)

这些选项都不会抛出错误,但;再次检查 csv 时分隔符仍然存在。我唯一一次看到这些参数起作用是当我将 csv 导出或输出到没有-delimiter-useculturearg 的位置时。

Ste*_*enP 7

使用 ; 创建 csv 作为分隔符:

Get-ChildItem c:\ | Select-Object FullName, Name, LastWriteTime |Export-Csv c:\temp\test.csv -Delimiter ';' -notypeinformation
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

导入 csv 告诉 powershell 分隔符是什么:

$imported = Import-Csv c:\temp\test.csv -Delimiter ';'
Run Code Online (Sandbox Code Playgroud)

示例输出:

$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
Run Code Online (Sandbox Code Playgroud)

将信息导出回来:

$imported | Export-Csv C:\temp\test.csv -delimiter ',' -notypeinformation
Run Code Online (Sandbox Code Playgroud)

文件包含:

"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"
Run Code Online (Sandbox Code Playgroud)

基本过程有效,所以我想知道您的输入文件是否是问题所在。如果这不起作用,请考虑清理并发布示例 csv。