PowerShell Import-CSV在字符之间添加空格

时间:2016-05-11 15:19:43

标签: excel csv powershell

我有一个CSV文件,在将其导入PowerShell之前看起来很好,当导入的每个字符后跟一个C : \而不是C:\的空格。

将单元格格式化为Excel格式(可行)很容易,但这个CSV文件是在自动化策略中在多个服务器上创建的,因此浏览每个文件并格式化它们需要一段时间可以想象。

我想知道是否有一种方法可以先在PowerShell中格式化单元格然后导入CSV。

我正在使用的PowerShell代码:

$data = import-csv -Path $path -UseCulture -Header @("Path", "Folder", "Size")

CSV片段:

C:\,C:\,14.0GB C:\Program Files,Program Files,4.5GB C:\Program Files\Microsoft Office,Microsoft Office,2.8GB

4 个答案:

答案 0 :(得分:0)

这可能会带来不同的问题,但它可能会删除所有空格

$data = import-csv -Path $path -UseCulture -Header @("Path", "Folder", "Size")
$data | % {
    $_.path = $_.path -replace '\s'
    $_.folder = $_.folder -replace '\s'
    $_.size = $_.size -replace '\s'
}
$data

答案 1 :(得分:0)

获取CSV的外观片段会很有用。你能提供标题和1或2行吗?

是否在CSV文件中指定了标题?

  

使用Header参数时,从CSV文件中删除原始标题行。否则,Import-Csv会从标题行中的项目创建一个额外的对象。   https://technet.microsoft.com/en-us/library/hh849891.aspx

您正在指定UseCulture开关,该开关将使用环境指定的默认分隔符。您可以运行以下命令来查找您的文化分隔符:

(Get-Culture).TextInfo.ListSeparator

https://technet.microsoft.com/en-us/library/hh849891.aspx

答案 2 :(得分:0)

听起来该文件可能是Unicode,但没有正确的字节顺序标记,这会导致PowerShell使用默认的ASCII编码。如果是这种情况,您需要指定编码:

$data = import-csv -Encoding Unicode -Path $path ...

另一种选择是在导入之前将文件转换为ASCII [对命令OP为:]

Get-content C:\path\TestXml.csv | Set-Content -Encoding Ascii TestXml.csv

答案 3 :(得分:0)

@Tony Hinkle向我发送了正确的方向,所以我将他的答案标记为正确,这是我使用过的代码:

将CSV的内容设置为ascii encoding

Get-content C:\Users\sam\Desktop\TestXml.csv | Set-Content -Encoding Ascii TestXml.csv

然后导入Csv

$data = Import-Csv C:\Users\sam\Desktop\TestXml.csv -Header @("Path", "Folder", "Size")