【发布时间】:2017-04-06 19:26:56
【问题描述】:
我需要做的是获取一些文本文件(csv,都在一个目录中)并创建文件,其中整个输出逐行反转,但将标题保持在顶部而不是在底部。
我可以获取一个文件(按名称)并复制第一行并创建一个仅包含该行的新文件。然后我将原始文件减去第一行,将其读入一个数组并反转它。然后我将它附加到只有标题的文件中。它工作正常,除了输出名称,我想是[file-REV.csv],但到目前为止我只得到[file.csv-REV]...
所以,一旦我完成了这项工作,我认为是时候让程序在目录中找到所有 csv 并循环遍历它们,为每个文件创建一个反向文件。
这是我目前所拥有的:
cd c:\users\$([Environment]::UserName)\working
$Path = "c:\users\$([Environment]::UserName)\working\"
ForEach ($file in Get-ChildItem -Filter *.csv) {
Get-Content $file -totalcount 1 | Set-Content .\$file-REV.csv
$flip = (get-content | select -Skip 1)
[array]::Reverse($flip)
$flip | add-content "$file-REV.csv"
}
这是我在执行脚本时收到的消息:
cmdlet Get-Content 在命令管道位置 1
为以下参数提供值:
路径[0]:
我尝试输入整个路径Get-Content -Path c:\users\jmurphy\working\,然后它抱怨找不到整个路径。
【问题讨论】:
-
我建议的第一件事是查看
Get-Help Get-ChildItem -Detailed和Get-Help Get-Content -Detailed的输出。您会发现Get-Helpcmdlet 是学习如何使用 PowerShell 时最有用的命令之一。 -
忽略潜在的其他问题给
Get-Content来自您创建的循环$flip = (get-content $file | select -Skip 1)的文件名。 c:\users\jmurphy\working 是文件夹.. 不是文件。 -
谢谢你们。我将从你的建议开始。我什至不知道 Get-Help(MS-man 就是它的名字)。谢谢!
标签: powershell csv foreach