【问题标题】:POWERSHELL: Simplest way to save string variable to csv filePOWERSHELL:将字符串变量保存到 csv 文件的最简单方法
【发布时间】:2020-05-29 04:07:23
【问题描述】:

我知道一点 Bash 脚本,但我对 PowerShell 很陌生。当我使用 bash 执行下面的代码时,一切都很好。但是,当我使用 PowerShell 时,每个回显的每个条目仅保存在 Excel 的单个单元格中。为什么会这样?我怎样才能以最简单的方式实现我的目标?

echo "1,2,3" > file.csv
echo "A,B,C" >> file.csv

不受欢迎:

希望:

我试着用谷歌搜索它。但是,据我了解,他们正在将字符串类型变量转换为 PS Object 之类的东西并转换为 CSV 格式。我试过了,它奏效了。但我不得不强制包含一个标题。

New-Object -Type PSObject -Property @{
'X' = $A
'Y' = $B
'Z' = $C
} | Export-Csv 'C:\Temp\test.csv' -NoType

当我也使用记事本打开 csv 文件时,每个单词都有双引号(我不喜欢这样)

您看,与 Linux 脚本相比,这要复杂得多。有人可以教我做我想做的最简单的方法吗?非常感谢!

【问题讨论】:

  • 这是正常的 CSV 行为。由于文件是逗号分隔的,您需要在逗号上拆分文件内容。然后你就有了你想要的结果。

标签: powershell csv


【解决方案1】:

如果在您的系统语言环境中,ListSeparator 字符不是逗号,双击逗号分隔的 csv 文件将打开 Excel,其中所有值都在同一列中。

我相信这就是这里发生的事情。

您可以通过输入检查

[cultureinfo]::CurrentCulture.TextInfo.ListSeparator

在 PowerShell 中

要让 Excel 在双击 CSV 时“理解”它,请将 -UseCulture 开关添加到 cmdlet:

Export-Csv 'C:\Temp\test.csv' -UseCulture -NoTypeInformation

关于值周围的引号:
它们并不总是必需的,但有时必不可少,例如,如果值具有前导或尾随空格字符,或者值包含分隔符本身。
让它们保持原样,Excel 知道如何处理。

如果您真的无法抗拒没有引号的 csv,请先查看the answers given here 了解该主题。


编辑

如果您绝对确定所有字段都可以不加引号,您可以这样做:

$sep = [cultureinfo]::CurrentCulture.TextInfo.ListSeparator
"1,2,3", "A,B,C" -replace ',', $sep | Out-File -FilePath 'D:\Test\file.csv' -Encoding utf8

【讨论】:

  • 非常感谢!有效!我试图查询ListSeparator,它是逗号。但是,我认为回答我的问题的是“-Encoding utf8”。它就像一个魅力!这是我使用的代码: echo "A,B,C" | Out-File -FilePath aaa.csv -Encoding utf8 -Append
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
相关资源
最近更新 更多