我想从一行中读取一个字符串,然后将其放入一个变量中,该变量随后用作文件名。 该字符串位于 .csv 文件中的第二行末尾。由于不必要的标题,需要删除第一行。 还有‘;’旧 .csv 文件中使用的内容需要替换为真正的逗号“,”。 到目前为止,我已经得到了以下一段 PowerShell 脚本:
Powershell -命令“(gc file1.csv | select -skip 1) -replace ';', ',' | Foreach-Object{ $_ + ',' } | Out-File file2.csv”
代码说明:
gc file1.csv | select -skip 1
获取csv文件的内容。并从临时数组中删除第一行。
-replace ';', ','
替换所有 ';'与“,”。
Foreach-Object{ $_ + ',' }
在所有行的末尾添加逗号(这是必要的)。
Out-File file2.csv
创建一个名为“file2.csv”的输出文件。
输入文件采用以下格式:(.csv 的前 2 行)
123.256.862;;0;568.153.135;12;0;;255.253.233
123.633.582;;0;568.588.533;12;0;;255.253.233
脚本生成的输出文件如下:(.csv 的前 2 行)
123.256.862,,0,568.153.135,12,0,,255.253.233,
123.633.582,,0,568.588.533,12,0,,255.253.233,
在 PowerShell 中编程时会出现以下问题:
如何将此代码编程为多行以提高可读性?
如何读取第二行的最后一个元素并将其放入变量中?
使用此变量作为名称生成新文件是否正确?我已经用虚拟变量尝试过这种方法,但它似乎不起作用。更具体地说:新文件名必须为 255.253.233.csv。
我已经在 google 上搜索了很多关于如何在 PowerShell 中初始化任何变量的信息,但仍然不清楚如何在之后准确地声明它。我希望我走在正确的解决方案道路上。非常感谢任何帮助。
最佳答案
您可以将 import-csv
与自定义 header (-headers
) 结合使用,并使用 -delimiter
参数进行使用不同分隔符的导入/导出。
要保存,请使用 export-csv -path $filename
(如果 $filename 已包含 .csv)或 export-csv -path $(".\$filename.csv")
.
编辑:也许可以发布输入文件的前 2(+) 行以获得改进的答案。
关于csv - 重建 CSV 并使用字段值作为导出的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918578/