循环浏览目录并使用Powershell删除csv标头

时间:2018-10-12 19:25:18

标签: powershell csv header directory

我试图遍历目录DirIn,从每个csv文件中删除前两行,然后将这些文件保存在新目录DirOut中。下面的代码是我在其他论坛上拼凑而成的,但是我无法使这些代码正常工作。任何帮助将不胜感激。

gci "DirIn\*.csv" | % {(gc $_ | select -Skip 2) | sc "DirOut\$_" }

3 个答案:

答案 0 :(得分:1)

$_循环中进行管道传递时,您将丢失对文件的ForEach-Object引用。使用-PipelineVariable参数可以解决该问题。

gci "DirIn\*.csv" -PipelineVariable 'File' | % {(gc $File | select -Skip 2) | sc "DirOut\$($File.Name)" }

答案 1 :(得分:1)

以可读且可维护的格式显示LotPings答案...

ForEach ($File in (Get-ChildItem "DirIn\*.csv")) {
    (Get-Content $File | Select-Object -Skip 2) |
        Set-Content "DirOut\$($File.Name)"
}

最佳做法是不要在脚本文件中使用别名。

答案 2 :(得分:0)

gci "DirIn\*.csv" | % {(gc $_ | select -Skip 2) | sc "DirOut\$($_.Name)" }