我有一个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
答案 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
答案 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)
将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")