Импортируйте несколько файлов JSON / CSV из одного каталога, затем перемещайте в другой каталог после преобразования с помощью powershell - PullRequest
0 голосов
/ 13 марта 2020

У меня есть партия файлов расширений csv в формате JSON в Content, и я пытался преобразовать их в формат csv с разделителями, используя powershell.

После преобразования одного JSON файла его необходимо переместить в другой каталог для резервного копирования после преобразования. Приведенный ниже скрипт работает, только если импортировать один файл stati c из одного каталога. Я пытаюсь использовать «Get-ChildItem | foreach-object», но по какой-то причине это не работает. При запуске этого сценария все файлы из raw будут сразу же перемещены в папку резервного копирования, но в преобразованной папке нет файлов, преобразованных.

Такое ощущение, что скрипт преобразования # execute вообще не запускался. Я не слишком уверен, если $ from Json = Get-Content -Raw $ InputPath | ConvertFrom- Json "работает для импорта файлов по l oop.

Нужна помощь!

рабочий скрипт:

$InputPath ="C:\Users\Desktop\raw\a.csv"

$OutputPath = "C:\Users\Desktop\raw\Converted\$(get-date -f yyyy-MM-ddhhmmssfffff).csv"

$fromJson = Get-Content -Raw $InputPath | ConvertFrom-Json 
& {

# execute converting script

} | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content -path $OutputPath 


Move-Item -path $InputPath -destination "C:\Users\Desktop\raw\backup"



Скрипт с проблемой:

$InputPath ="C:\Users\Desktop\raw\*.csv"

Get-ChildItem $InputPath| Foreach-Object{
$OutputPath = "C:\Users\Desktop\raw\Converted\$(get-date -f yyyy-MM-ddhhmmssfffff).csv"

$fromJson = Get-Content -Raw $InputPath | ConvertFrom-Json 
& {

# execute converting script

} | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content -path $OutputPath 


Move-Item -path $InputPath -destination "C:\Users\Desktop\raw\backup"

}

1 Ответ

2 голосов
/ 13 марта 2020

Вам нужно сначала получить все файлы CSV, а затем просмотреть их. Нижеследующее должно работать для того, что вы ищете.

$CSVFiles = Get-ChildItem -Path "C:\Users\Desktop\raw\" -Filter "*.CSV"
Foreach($File in $CSVFiles) {
    Get-Content -Raw $File.FullName | ConvertFrom-Json 
    & {
        # execute converting script
    } | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content -path $("C:\Users\Desktop\raw\Converted\$($File.BaseName)_$(get-date -f yyyy-MM-ddhhmmssfffff).csv")
    Move-Item -path $File.FullName -destination "C:\Users\Desktop\raw\backup"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...