私はPowerShellで作業しています。私のPSVersionは3.0です。私はそれにいくつかのCSVファイルを持つフォルダがあります。各ファイルは複数の列を持つことができ、1行目に列見出しが含まれます。列の順序は常に同じではありません。私は各ファイルから特定の列だけを取り出す必要があります。フェッチする必要のある列はすべてのファイルで同じで、すべてのファイルには少なくともフェッチする必要がある(一般的にはそれ以上の)列があります。フェッチされたら、各ファイルのフェッチされた列を、対応するCSV、別のフォルダにエクスポートする必要があります。フォルダ内のすべてのファイルを読み込み、変換して出力する方法は?
file1.csv
:
Col1 Col2 Col3 Col4 a 1 z 0.0
file2.csv
:私は列のみCol1
、各ファイルからCol4
を取得する必要が
Col4 Col1 Col3 Col2 1.0 b x 2
例えば、私は私の入力フォルダに以下の2つのファイルを持っています。だから、私は、次のファイルを出力することを期待:
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
コマンド。 Select-Object
の中に私の配管についての何かが間違っている、だから、
A positional parameter cannot be found that accepts argument 'System.Object{}'
:私は次のエラーを取得しておきます。このエラーを解決して目標を達成するにはどうすればよいですか?
トンインクルードファイルをサブフォルダに入れたくない場合は、-Recurseは必要ですか? – user3100444
'-Recurse'スイッチを指定しないと、指定したディレクトリのファイル/フォルダのみがキャプチャされます@ user3100444 – TheIncorrigible1