【问题标题】:Name File base on CSV value基于 CSV 值的名称文件
【发布时间】:2020-11-17 06:00:45
【问题描述】:

我正在尝试使用 powershell 将 CSV 文件分成多个文件,然后根据 CSV 文件中的值重命名它们。这是我目前所拥有的,但它所做的只是根据计数器而不是 CSV 文件中的值来命名文件。

$sourceCSV = "c:\01_daily.csv"

$startrow = 0

$counter = 1

while ($startrow -lt $item)

{

Import-CSV $sourceCSV | 
    select-object -skip $startrow -first 1 | 
    ConvertTo-Csv -NoType | 
    Select-Object -Skip 1 | 
    Set-Content "c:\daily$($counter).csv";

$startrow += 1 ;

$counter++ ;

}
```[enter image description here][1]

Any suggestions would be greatly appreciated.

Thank you.


【问题讨论】:

  • [1]你想如何生成文件名? _请详细点! [grin] [2] 你想达到什么目的?有更简单的方法可以将文本文件分成“这么多行”的块。例如,Get-Content 有一个 -LineCount 参数...
  • 我有一个包含 14 个单元格的 CSV 文件。我希望文件名是 10 单元格之后的名称。但是在 10 单元格中有 .pdf 我不需要。例如,单元格 10 是 David.PDF。我只需要将新的 csv 文件命名为 David.CSV。我不希望文件名中包含 .PDF。所以最终的文档将在第 10 个单元格之后命名,并包含行内的所有信息。
  • 请在您的问题中添加输入文件前 3-5 行的示例、您希望发送到每个输出文件的内容以及如何命名每个输出文件。您当前的描述似乎表明只向每个文件发送一行,并在第 10 列中的部分值之后对其进行命名。 与您发布的代码完全不符。 [grin]
  • 请...不要发布数据/错误/代码的图片。我请求的原因是允许根据您的要求测试代码。您真的希望任何人输入您的数据只是为了帮助您...当您已经将这些数据作为 text 获得时?

标签: powershell csv split rename


【解决方案1】:

老兄,你想得太复杂了(对于大多数 csv 文件)

看看这个:

$sourceCSV = "c:\01_daily.csv"

[array]$object = Import-Csv $sourceCSV

for($i=1;$i -le $object.length; $i++) {

    $object[$i-1] | Out-File ('c:\daily' + $counter + '.csv')

}

【讨论】:

    猜你喜欢
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多