PowerShell для предварительного преобразования нескольких файлов JSON в одну папку - PullRequest
1 голос
/ 28 апреля 2020

Моя цель - сделать все файлы JSON (около 70 тыс.) В одной папке. Скажем, у меня есть одна папка с именем "juicero", и там около 70K. JSON файлов с разными именами - a. json, b. json

Это то, что я пробовал -

PS> $files = Get-ChildItem C:\users\gamer\desktop\juicero\*.json
PS> $json_test = (Get-Content $files -raw | ConvertFrom-Json)
PS> foreach ($file in $files) { ConvertTo-Json | Set-Content $files }

Я думал, что он будет перебирать путь и подправлять их (довольно простые логи c), но по какой-то причине это удаляет содержимое файлов. Если я не выполняю итерацию и просто использую эту функцию для одного файла. json, она работает - так что я предполагаю, что что-то не так с логикой итерации c?

1 Ответ

1 голос
/ 28 апреля 2020

Вам необходимо работать с файлами внутри l oop, например:

foreach ($file in $files) {
  $content = Get-Content $file -Raw | ConvertFrom-Json
  $newFilePath = $file.FullName.Replace("OldFolder","NewFolder")
  ConvertTo-Json -InputObject $content| Set-Content $newFilePath
}

Обратите внимание, что я помещаю выходные файлы в новую папку, чтобы упростить отладку в случае каких-либо проблем.


Есть еще одна проблема с вашим кодом. Здесь вы конвертируете все файлы одновременно:

$json_test = (Get-Content $files -raw | ConvertFrom-Json)

Однако позже PowerShell не имеет информации об имени исходного файла (имя файла не включено в $json_test).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...