私はよく1〜2週間でPowerShellスクリプトを使って作業しています。私はそれの一部を得ることができましたが、私は完全にこれを自動化することができません。Powershell - 複数のCSVを一意のフォルダにエクスポート
私は日常的に多くのCSVファイルを扱いますが、ソフトウェアにアップロードすることが任されていますが、扱うには大きすぎることもありますので、 "タイプ"に基づいて打ち切りますCSVの列)、それを「タイプ」ごとに1つのCSVにエクスポートします。私はこれを次のように達成することができました:
$file = gci -Filter "*.csv";
Import-Csv $file `
| Group-Object –Property “type” `
| Foreach-Object `
{
$path=$_.name+”.csv” ; $_.group `
| Export-Csv –Path $path –NoTypeInformation
}
これは、個々のCSVごとに素晴らしく機能します。残念ながら、私は個々のCSVごとにこれを行う時間がありません。今、私は私の他のPowerShellスクリプトに来る:これは効果的に機能していない「なぜ」
get-childitem -Filter "*.csv" `
| select-object basename `
| foreach-object{ $path=$_.basename+".csv" #iterate through files.
if(!(Test-Path -path $_.basename)) #If the folder of the file can't be found then it will attempt to create it.
{
New-Item $_.basename -type directory; $file=$_.basename+".csv";
Import-Csv $file `
| Group-Object -Property "Type" `
| Foreach-Object {
$path=$_.name+".csv"; $_.group `
| `
if(!(Test-Path -path $path2))
{
New-Item $path2 -type directory
Export-Csv -Path $path2 + "\" + $path -NoTypeInformation
}
else
{
"Failed on: " + $_.basename
#Export-Csv -Path $_.basename + "\" + $path -NoTypeInformation
}
}
}
else
{
Import-Csv $path `
| Group-Object -Property "Type" `
| Foreach-Object {$path=$_.basename+".csv" ; $_.group
if(Test-Path -path $._)
{
New-Item $path2 -type directory
Export-Csv -Path $path2 + "\" + $path -NoTypeInformation
}
#else
#{
Write-Host "Failed on: $_.basename"
#Export-Csv -Path $_.basename + "\" + $path -NoTypeInformation
#}
}
}
}
私はただのまわりで私の頭をラップすることはできません。私には2つの条件があります。 CSV用のフォルダはありますか?作成しない場合私は別のものを持っている必要があります。なぜなら、 "types"の中にフォルダを持っていないとエラーが出るので、自動的に作成しようとします。スクリプトを実行すると、パスはnullになります。
エラーは次のとおりです。
The term ' ' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At C:\Users\c.burkinshaw\foldermake.ps1:11 char:26 + | ` <<<< + CategoryInfo : ObjectNotFound: (:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
Test-Path : Cannot bind argument to parameter 'Path' because it is null. At C:\Users\c.burkinshaw\foldermake.ps1:12 char:45 + if(!(Test-Path -path <<<< $path2)) + CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
あなたが尋ねることを躊躇しないでください質問がある場合は、すべてのヘルプは大幅にいただければ幸いです。
パスはどこでヌルエラーですか。 – manojlds
エラーに応じて:行11 Char 26または行12 Char 45 '$ path = $ _。name +" .csv "; $ _。group ' | ' – Anubis