我在PowerShell中工作。我的PSVersion是3.0。我有一个包含几个CSV文件的文件夹。每个文件中可以包含几列,并在第一行包含列标题。列的顺序将始终不相同。我只需要从每个文件中提取某些列。我需要提取的列在所有文件中都是相同的,并且所有文件都至少具有我需要提取的列(通常更多)。提取后,我需要将为每个文件提取的列导出到另一个文件夹中的相应CSV。例如,我的输入文件夹中有以下2个文件:
file1.csv
:
Col1 Col2 Col3 Col4 a 1 of 0.0
file2.csv
:
Col4 Col1 Col3 Col2 1.0 bx 2
我需要获取仅列Col1
,并Col4
从每个文件。因此,我希望输出以下文件:
file1.csv
:
Col1 Col4 a 0.0
file2.csv
:
Col1 Col4 b 1.0
下面是我的脚本:
$inputDirectory = 'C:\some_path\input\';
$outputDirectory = 'C:\another_path\output\';
$inputFiles = Get-ChildItem -Path $inputDirectory -Recurse -Include *.csv;
ForEach-Object {
Import-Csv $inputFiles |
Select-Object -Property Col1, Col4 |
Export-Csv $outputDirectory + $inputFiles.Name -NoTypeInformation
}
我在使用Export-Csv
命令时遇到麻烦。我不断收到以下错误:
找不到接受参数'System.Object {}'的位置参数
因此,关于我的管道的某些信息Select-Object
是错误的。如何解决此错误并实现目标?
您的逻辑是合理的,但是语法没有意义。
$Path = 'C:\Temp\Input'
$Output = 'C:\Temp\Output'
$Files = Get-ChildItem -Path $Path -Recurse -Include '*.csv'
ForEach ($File in $Files)
{
Import-Csv -Path $File.FullName | Select-Object -Property @('Col1','Col4') |
Export-Csv -Path (Join-Path $Output $File.Name) -NoTypeInformation -Append
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句