2017-06-29 8 views
0

私の現在のシナリオでは、.csvファイルを.csvファイルを解析して特定のデータを削除し、抽出されたデータのみを含む新しいファイルを作成するスクリプトを実行する場所に移動します。特定のファイル名を定義せずにImport-CSV cmdを使用できますか?

私のコードは問題ありません。

しかし、今は生産からのデータファイルを使用しながら別のUATを実行しています。これらの.csvファイルは毎日、私たちに来ます。

私はスクリプトを最初にtext.csvで書いており、このスクリプトをスケジュールに従って自動化したいと考えています。しかし、今私は毎回csvファイルを定義する必要がありますか?これは実現可能ではありません。

import-csvコマンドレットを使用して、フォルダに表示されているcsvファイルをロードすることはできますか。これでもフォルダ内のただ一つのCSVファイルを使用して、エラーを返して

Import-Csv "\\pg-app05\Micros\Scripted Data Extraction\Sales\" |Where 
{$_.SITEID -like "7*"} | Select 
SITEID,DATE,REVENUECENTER,OVERGROUP,UNITS,PRICE,NETT,VATRATE,VAT,GROSS | 
ConvertTo-CSV -NoTypeInformation | % {$_ -replace '"',""} |Out-File "\\pg- 
app05\Micros\Scripted Data Extraction\Sales\sales_$(get-date -f 
yyyy_MM_dd)_NI.csv" -fo -en ascii 

は、ここに私のコードです。 SALES_27062017_090019.csv

は今までその可能性はちょうどかかわらず、定義されたfilenamebeingの、csvファイルを読み込むPowerShellを持っている場合はそう思って、ここに存在する一つのファイルがあるはずですか?

私は

Import-Csv "\\pg-app05\Micros\Scripted Data Extraction\Sales\*.csv" 

を試してみましたが、それは私に生成された出力ファイルを与えながら、その中には何もなかったしました。

答えて

2

私はあなたができると思う:

(Get-ChildItem "\\pg-app05\Micros\Scripted Data Extraction\Sales\*.csv").FullName | Import-Csv 

Get-ChildItemはその-Pathパラメータのワイルドカードのパラメータを受け入れるので。

あなたの試み:Import-CSV-Pathパラメータは、ワイルドカード文字を受け付けないので、

Import-Csv "\\pg-app05\Micros\Scripted Data Extraction\Sales\*.csv" 

は動作しません。

(Get-ChildItem "\\pg-app05\Micros\Scripted Data Extraction\Sales\*.csv" | Select -First 1).FullName | Import-Csv 
+1

このサイトは引き続き贈り物です。 100万人のMarkさん、ありがとうございました。 – Daniel

+0

Import-CSVは値をパラメータでバインドするので、 'GCI -Path $ path | Import-CSV'は 'GCI -Path $ path | 'と同様に動作します。選択 - 最初に 1 |インポート-CSV' – Matt

+0

'get-childitem -path * .csv | Import-CSV'は以下を返します。 Import-CSV:-Pathまたは-LiteralPathのいずれかのパラメータを指定する必要がありますが、両方を指定する必要はありません。 –

2

Import-CSV、実際には、複数のCSVからのインポート処理することができますが、任意のワイルドカード処理を持っていない:あなたが確認するには

あなたは今まで1 CSVは、あなたが行うことができます返され得ます。ソリューションは@MarkWraggによる回答の男性のための

+0

私は、PathNameまたはLiteralPathにバインドするかどうかをテストしたときに、 'FullName'プロパティを明示的に取得する答えを修正しました。あなたの解決策は、-Pathのパラメータを明示的に(少なくとも位置によって)作るため、間違いなく優れています。 –

+1

デフォルトでは、文字列を 'Get-ChildItem'に' -Path'として渡すことができます。これは、 '-LiteralPath'を使ってもワイルドカードの展開を防ぐことができると信じているからです。 '$ _。FullName'については、CSVが置かれているディレクトリと同じディレクトリでスクリプトが実行されているという保証はないので、あなたは良い点を挙げています。私はそれに適応するために私の答えを修正しました。 –

+0

ありがとうございましたJeff、あなたのソリューションはMarksと共に完璧に動作します。 – Daniel

0

感謝を提案すべきであるとして、

Import-CSV ((Get-ChildItem -Path "\\pg-app05\Micros\Scripted Data Extraction\Sales\*.csv").FullName) 

が動作するはずです:他のいくつかの方法 - 単一のCSVを含むこと - だから、あなたは、CSVをのリストを生成する必要があります、助けをありがとう。だからここ

は私が

(Get-ChildItem "\\pg-app05\Micros\Scripted Data 
Extraction\Sales\*.csv").FullName | Import-Csv |Where {$_.SITEID -like "7*"} 
| Select 
SITEID,DATE,REVENUECENTER,OVERGROUP,UNITS,PRICE,NETT,VATRATE,VAT,GROSS | 
ConvertTo-CSV -NoTypeInformation | % {$_ -replace '"',""} |Out-File "\\pg- 
app05\Micros\Scripted Data Extraction\Sales\sales_$(get-date -f 
yyyy_MM_dd)_NI.csv" -fo -en ascii 

が、私は今、私は必要な解析されたデータが含まれている生成OUTFILEを取得していたいものを達成している私の最後のカットです。より多くのテストで!

関連する問題