Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/48: Рейтинг темы: голосов - 48, средняя оценка - 4.94
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8543 / 3423 / 105
Регистрация: 24.05.2011
Сообщений: 14,651
Записей в блоге: 8

Перекодировка JSON в TXT

15.01.2021, 14:10. Показов 10242. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

В текущей папке есть пачка подпапок с файлом message_1.json
Эти файлы нужно раскодировать в читаемый формат в файлы *.txt
Вручную файл открываю прогой MiTeC JSON Viewer (JSONView), а затем выделенные поля файла перекодирую прогой Stirlitz.
Но, во-первых, это очень медленно и неэффективно, а во-вторых, перекодировка тоже с переменным успехом.

Источник этого гуано - архив страницы Instagramа, из этого гуано нужно выловить несколько удалённых писем, находимых по имени отправителя.

Вопрос: как автоматизировать эту чехарду?

Добавлено через 1 минуту
UPD: почему в CMD/Batch - потому, что эту задачу надо решить на машине с Вин7, в которой ничего более путного и подходящего нет.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.01.2021, 14:10
Ответы с готовыми решениями:

Перекодировка формата JSON в транслит и обратно
Пожалуйста помогите разобраться. Вкратце задача: перекодировка формата JSON в транслит и обратно. загружается файл формата JSON, если...

перекодировка данных формата Json в транслит
нужно написать программу перекодировки данных, хранящихся в текстовом файле в формате JSON в транслит и обратно. структура данных формата...

Сериализация в xml, txt, json
доброго времени суток. прошу помочь реализовать сериализацию и десериализацию в xml, txt, json, так как совсем ничегошеньки не получаеться....

37
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
16.01.2021, 22:14
Студворк — интернет-сервис помощи студентам
NeoMatrix, наколхозил скриптег, перебирает в данной папке все файлы *.json и создает соответственно с таким же именем файлы *.txt например такого содержания.
messages.zip

Имена файлов, как и их содержание - как на душу ляжет. Уточняй.
1
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8543 / 3423 / 105
Регистрация: 24.05.2011
Сообщений: 14,651
Записей в блоге: 8
16.01.2021, 23:52  [ТС]
iSmokeJC, то, что доктор прописал.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
16.01.2021, 23:59
Лучший ответ Сообщение было отмечено NeoMatrix как решение

Решение

NeoMatrix, особо заморачиваться не стал, скрипт колхозный. Но коль бОльшего и не требуется...
neomatrix.py.zip

Там путь к папке прописан - если скрипт лежит рядом с ней.
Ну спрашивай если что
2
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
17.01.2021, 11:37
Лучший ответ Сообщение было отмечено NeoMatrix как решение

Решение

Цитата Сообщение от YuS_2 Посмотреть сообщение
Что делает:
1. Отбирает рекурсивно файлы по маске в указанном каталоге.
2. Раскодирует эканированное представление юникода.
3. Декодирует из 65001->28591, то бишь, возвращает кириллицу на место.
4. Добавляет в имя файла таймштамп (формат "yyyyMMddhhmm") плюс суффикс "_out" и сохраняет новый файл рядом с исходным в кодировке utf8.
Дальнейшая автоматизация требует уточнений...
В некоторых случая ломались суррогатные пары (следствие декодирования экранированного юникода внутренними командлетами convertfrom-json|convertto-json)...


переработанный скрипт с возможностью вывода данных в текст и с описанием:
script.ps1
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<#
    .SYNOPSIS 
        Разбор файлов json с двойным кодированием и экранированным Unicode (UTF16)
 
    .Description
        Скрипт предназначен для декодирования кодов символов Unicode (UTF16) из JSON,
        представленных в виде "\ud83d\udc4d", в сами символы, а также исправления двойного
        кодирования, например ISO 2859-1 -> UTF-8 и вывода данных либо в новый .json,
        либо в текст.
 
    .Parameter Folder
        Необязательный: Указывает путь к каталогу с файлами для рекурсивного отбора файлов
        Осторожно: Если каталог не указан или отсутствует, рекурсивный отбор будет 
        осуществляться во всех подкаталогах, начиная от места расположения скрипта.
 
    .Parameter Include
        Необязательный: маска(и) для включения файлов в выборку
    
    .Parameter Exclude
        Необязательный: маска(и) для исключения файлов из выборки
 
    .Parameter Outext
        Необязательный: расширение для сохраняемого текстового файла, в виде '.txt'
 
    .Parameter Encoding
        Необязательный: кодировка для чтения и сохранения файлов
 
    .Parameter Inencoding
        Необязательный: исходная кодировка для исправления двойного кодирования
 
    .Parameter Outencoding
        Необязательный: целевая кодировка для исправления двойного кодирования
 
    .Parameter Txt
        Переключатель: для вывода данных в текстовый файл, вместо .JSON
 
    .Example
        .\script.ps1 -fold "D:\FOLDER" -incl '*1.json','*2.json' -excl '*_out.*' -outext '.txt' -txt
 
        Это пример декодирования кодов из файлов, отобранных по маскам '*1.json' и '*2.json'
        и вывод данных в текстовые файлы c идентичными именами, но с расширением .txt
        Из выборки исключаются файлы с суффиксом '_out' в имени файла.
 
    .Example
        .\script.ps1 -fold "D:\FOLDER"
 
        Это пример декодирования файлов и создания рядом с исходными новых json файлов, но с 
        суфиксом '_out' в имени.
 
    .Link
        https://www.cyberforum.ru/cmd-bat/thread2769643.html#post15187099
        
    .Notes
        Created By YuS
 
        Version: 1.00
        Date: 17.01.2021
        Purpose/Change: Первая версия
#>
 
#requires -v 3.0
 
param (
    [string]$folder = '.\JSON',
    [string[]]$include = '*.json',
    [string[]]$exclude = '*_out.*',
    [string]$outext = '.txt',
    $encoding = 'utf8',
    $inencoding = 65001,
    $outencoding = 28591,
    [switch]$txt
)
 
function decode {
    param(
        [parameter(mandatory=$true,valuefrompipeline=$true)]
        [string]$string
    )
    [regex]::replace($string,'(?:\\u[0-9a-fA-F]{4})+',{
        param($m)
        [regex]::unescape($m.value)
    })
}
function convert ($from, $to){
    begin{
        $fenc = [text.encoding]::getencoding($from)
        $tenc = [text.encoding]::getencoding($to)
    }
    process{
        $a = $tenc.getbytes($_)
        $fenc.getstring($a)
    }
}
function convert-tstamp ([double]$stp){
    (get-date(
        ([datetime]"1/1/1970").addseconds("$($stp/1000)").tolocaltime()
    )).tostring("dd.MM.yyyy hh:mm:ss")
}
function set-out ($enc,$enc1,$enc2,$sw) {
    process {
        $tmp,$k = $_,1
        $json = gc $tmp.fullname -enc $enc -raw|decode
        $out = if ($json -match [char]208){$json|convert $enc1 $enc2} else {$json}
        if ($sw){
            $content = $out|convertfrom-json
            $string = $(
                "Участники:"
                $content.participants.name
                "`nСообщения:"
                foreach ($item in $content.messages){
                    "$k."
                    if($item.sender_name){"Отправитель: "+$item.sender_name}
                    if($item.timestamp_ms){"Дата: "+$(convert-tstamp $item.timestamp_ms)}
                    if($item.content){"Контент: "+$item.content}
                    if($item.share){
                        if ($item.share.link){"Ссылка: "+$item.share.link}
                        if ($item.share.share_text){"Текст: "+$item.share.share_text}
                    }
                    if($item.type){"Тип: "+$item.type}
                    $k++
                }
                "`nЗаголовок: "+$content.title
                "Тип цепи переписки: "+$content.thread_type
                "Путь цепи переписки: "+$content.thread_path
            )
            $string|
            out-file ($tmp.directoryname+'\'+$tmp.basename+$outext) -enc $enc
        } else {
            $out|
            out-file ($tmp.directoryname+'\'+$tmp.basename+'_out'+$tmp.extension) -enc $enc
        }
    }
}
 
dir $folder -incl $include -excl $exclude -rec -file|set-out $encoding $inencoding $outencoding $txt
3
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
17.01.2021, 23:05
Как понимаю, тут уже много вариантов преобразования файлов. Но подумалось, что удобно будет собрать необходимые для анализа данные из всех файлов, в процессе их преобразования, в один большой Excel. Будет удобнее искать и разбираться, и можно передать его кому-нибудь из сотрудниц, если не будет времени самому возиться.
Как сохранять и запускть скрипт уже есть выше.
В результате, кроме кучи txt файлов должен создаться Excel файл в котором будут перечислены файлы и основная информация из них. Причём, имя файла в колонке "А" будет ссылкой на сам файл: если ткнуть в неё - должен открыться txt файл в блокноте, чтобы посмотреть его целиком, если вдруг приспичило.
Пояснения вроде подробно наклепал - если что, надеюсь будет несложно что-то подрихтовать или добавить.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Option explicit
Dim FSO, xFiles, xFile, xls, xwb, xsh, iRow, jNodeNam, jNodeVal
  jNodeNam = Array("name","title","sender_name","timestamp_ms","content","share_text") 'список полей для вывода в excel
  Set FSO = CreateObject("Scripting.FileSystemObject") 
  Set xls = CreateObject("Excel.Application")' Запускаем Excel
  Set xwb = xls.WorkBooks.Add 
  Set xSh = xWb.Sheets(1) ' работаем с первым листом 
  xls.visible = True 'лучше видеть
  xls.ActiveWindow.SplitRow = 1 ' первая строка будет "прибита к листу"
  xls.ActiveWindow.FreezePanes = True
 
  with xSh.Range("A1") ' в колонку А будем выводить имя файла с гиперссылкой на него
    .Value = "Файл"
    .ColumnWidth = 20 'сам подбери ширину колонки
  end with
  xSh.Range("B1").Resize(1,uBound(jNodeNam)+1).Value = jNodenam ' далее идут наименования нужных нод
  xSh.Range("B:B").Resize(1,uBound(jNodeNam)+1).ColumnWidth = Array(30,30,30,20,70,70) ' и их ширины
  xSh.Rows("1:1").Font.Bold = True 'заголовки выделим болдом
 
  iRow = 1 'номер текущей строки
  Set xFiles = CreateObject("Shell.Application").NameSpace(FSO.GetAbsolutePathname("")).Items() 'всё что есть в нашей папке
  xFiles.Filter 64, "*.json" 'смотрим только на файлы с такой маской.
 
  for each xFile in xFiles
    iRow = iRow + 1 ' увеличим счётчик строк
    Json2txt xFile.Path 'обрабатываем файл
  next
  Set FSO = Nothing: Set xFiles = Nothing: Set xsh = Nothing: Set xwb = Nothing: Set xls = Nothing
  wsh.Echo "Разбор окончен!"
  wsh.quit
 
Sub JSon2Txt( fname) 
DIM ff1, ff2, ss1, ss2, ii, jj, NameThisNode, ValThisNode, tname
  jNodeVal = Array("","","","","","") ' !!! число элементов обязательно такое же как у jNodenam !!!
  tname = Replace(fname,".json",".txt") 'полный путь к файлу .txt
  Set ff1 = FSO.OpenTextFile(fname,1) 'json файл откроем
  Set ff2 = FSO.CreateTextFile(tname, True, False) 'создаем .txt
  xSh.Range("A" & cstr(iRow)).Value = FSO.GetbaseName(tname) & ".txt" 'запишем имя файла .txt в колонку А
  xSh.Hyperlinks.Add xSh.Range("A" & cstr(iRow)), tname ' и привяжем к нему ссылку на сам файл
 
  Do While Not ff1.AtEndOfStream 
    ss1 = ff1.ReadLine 'читаем из json файла
    ss2 = ""
    ii = Instr(ss1,"\u") ' преобразуем экранированный текст
    Do While ii > 0 
      if ii > 1 Then
        ss2 = ss2 & left (ss1,ii-1)
      end if
      ss2 = ss2 & Chr(cInt("&H" & Mid(ss1,ii+2,4)))
      ss1 = Mid (ss1,ii+6)
      ii = Instr(ss1,"\u")
    Loop 
    if Len(ss1) > 0 Then
      ss2 = ss2 & ss1
    end if
    ss2 = Replace(ss2,"\n", vbCRLF)
    ff2.WriteLine (ss2) ' и пишем его в результат
 
    ss2 = Utf2Ansi(ss2) 'для вывода в Excel реобразем строку в Ansi
    jj = InStr(ss2, """:") 'если в ней есть нода, то
    if jj > 0 Then
      NameThisNode = Mid(Trim(Left(ss2,jj-1)),2) 'имя ноды - перед двоеточием
      ValThisNode  = Trim(Mid(ss2,jj+2)) 'Значение ноды - после 
      if Right(ValThisNode,1) = "," Then 
        ValThisNode= Left(ValThisNode, Len(ValThisNode)-1) 'уберем финальную запятую
      end if
      if NameThisNode = "timestamp_ms" Then 'преобразем таймштамп
        ValThisNode= Cstr(DateAdd("s",cDbl(ValThisNode)/1000,dateSerial(1970,1,1)))
      end if
      for ii=0 To UBound(jNodeNam) Step 1
        if jNodenam(ii) = NameThisNode Then ' если имя ноды в списке выводимых в Excel
          if jNodeval(ii) = "" Then
            jNodeVal(ii) = ValThisNode ' запишем значение в массив
          elseif NameThisNode = "timestamp_ms" and jNodeVal(ii) = ValThisNode Then
            ' если таймштамп совпадет с ранее внесенным для данной записи - ничего не делать
          else ' если уже есть одно значение для данной ноды
            jNodeVal(ii) = jNodeval(ii) & vbCRLF & ValThisNode 'добавим и это, отделив переносом строки
          end if
          exit for
        end if
      Next
    end if
  Loop
  xSh.Range("B" & iRow).Resize(1,uBound(jNodeVal)+1).Value = jNodeVal 'занесем все значения в Excel
 
  Set ff1 = Nothing: Set ff2 = Nothing: 
End Sub
Function Utf2Ansi(xStr) 'преобразование utf в Ansi
  Dim objStream
Set objStream = CreateObject("ADODB.Stream")    
    objStream.Open()
    objStream.Type = 2
    objStream.Charset = "windows-1251"
    objStream.WriteText(xStr)
    objStream.Flush()
    objStream.Position = 0
    objStream.Charset = "utf-8"
    Utf2Ansi = objStream.ReadText(-1)
    objStream.Close()
End Function
2
 Аватар для volodin661
7161 / 2349 / 354
Регистрация: 10.12.2013
Сообщений: 8,141
17.01.2021, 23:36
Punkt5,
неочевидное решение.

В случае Windows придётся купить Excel ( а это около $200 ),
а в случае Linux вообще не заработает.

Добавлено через 9 минут
Цитата Сообщение от Punkt5 Посмотреть сообщение
и можно передать его кому-нибудь из сотрудниц, если не будет времени самому возиться.
в в этом случае придётся купить Excel какой-нибудь сотруднице, чтобы она возилась с ним, когда у тебя самого нету времени, а у неё есть.
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
18.01.2021, 01:50
Цитата Сообщение от NeoMatrix Посмотреть сообщение
отсортировать по отправителям-получателям
выловить интересующую переписку
отсортировать полученные группы писем по датам
Цитата Сообщение от NeoMatrix Посмотреть сообщение
все нужные файлы из подпапок собрал в одну
Как я понял, нужно найти всю переписку с определенным человеком, и прочитать ее в виде чата.
code
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
param(
    $path = "D:\msgBackup",
    $name = "Пользователь Facebook"
)cls
 
New-Item -Item di $path\dialogs -ea 0|out-null
(Get-ChildItem $path -file).FullName|%{rv messages -ea 0}{
    [object[]]$messages+= [Text.Encoding]::UTF8.GetString(
        ([Text.Encoding]::Unicode.GetBytes(
            ([regex]::unescape(((gc -raw $_ -en UTF8)`
            -replace'(\\("|\\|/|b|f|n|r|t))','\$1')))
        )|?{$_-ne0})
    )|ConvertFrom-Json
}
 
(($messages|Where{$name -in $_.participants.name})|
sort {([object[]]$_.messages.timestamp_ms)[0]}|ForEach{
    "—"*40+ "`n•[" + (date 01.01.1970).AddMilliseconds(
    $_.messages.timestamp_ms[0]).ToString()+"] "+
    ([string[]]$_.messages.sender_name)[0];"."*40
    $_.messages|ForEach{
        if($_.type-eq"Generic")
        {$_.content}
        elseif($_.type-eq"Share")
        {$_.share.link;$_.share.share_text}
    }
    
})|out-file "$path\dialogs\$name.txt"
 
&"$path\dialogs\$name.txt"

Result
Цитата Сообщение от NeoMatrix Посмотреть сообщение
переписка с "Пользователь Facebook"

————————————————————————————————————————
•[25.04.2020 13:13:32] Пользователь Facebook
........................................
————————————————————————————————————————
•[18.08.2020 13:10:44] Пользователь Facebook
........................................
https://www.instagram.com/p/CCns2iWB5xG/
КАМАСУТРА ДЛЯ ДИЗАЙНЕРА ИНТЕРЬЕРА

Книга, которая всколыхнула сообщество дизайнеров и специалистов в сфере ремонта в этом году.

Дизайн интерьера - это не только ответы про красоту пространства, но и про технические вопросы проекта.

Даже если вы много лет занимаетесь дизайном и чертежами в том числе, в книге вы всё равно найдете много нового и полезного. Каждый лист просто "напичкан" полезнейшей информацией.

Огромный плюс книге - это QR-коды, в которых зашита дополнительная информация и ссылки.

Книга настолько удобна, что не нужно искать что-то еще в интернете по вопросу чертежей и технической части проекта.

Книга как шпаргалка, забыли что-то - открыли, посмотрели, изучили.

Как написала одна из читательниц:
"Это единственная книга на сегодня о дизайне интерьеров без воды и по делу"

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

Книга стоит от 3490 руб. в зависимости от выбранного пакета.

Пишите в Директ слово "Книга" и отправим подробности по книге или переходите по ссылке в шапке профиля.

Все отзывы по книге смотрите в прикрепленном хайлатсе "Камасутра" в аккаунте.
---------------------------------
Есть вопросы? пишите

#камасутрадизайнера #чертежидизайнпроектов #чертежник80уровня #чертежи80уровня #денисшамсутдинов
————————————————————————————————————————
•[11.09.2020 12:18:27] Пользователь Facebook
........................................
https://is.gd/tmk5RG
Здравствуйте! Вы выбраны для участия в розыгрыше призов от uнстagрam. Выигрыши до 1000000p. Чтобы поучавствовать, прочитайте подробности на официальном сайте розыгрыша (Чтобы ссылка стала активной, нажмите "Принять" в правом нижнем углу вашего экрана) https://is.gd/tmk5RG
————————————————————————————————————————
•[25.09.2020 13:59:21] Пользователь Facebook
........................................
https://www.instagram.com/_u/danyas_up
здpавcтвуйтe. извинитe - очень xотелось бы узнaть Baше мнениe oб aнимационных pекламныx видеoроликах / инфoграфике.
Kроме тoго что резyльтаты oт прoсмотра на 250-500% вышe, чем y oбычныx рекламныx видeo или кaртинoк, их ещё и очень интeрecнo cмoтpеть, coгласны? Нaшa комaнда занимaется рaзрaбoткой peкламныx роликов ужe 4 гoдa. Есть бoльшoе пoртфoлио и множecтвo ЖИBЫX oтзывoв. У нaс cейчac aкция -30% нa сoздание различных видeоpоликов! Напишитe pyковoдителю в диpект
————————————————————————————————————————
•[11.10.2020 16:46:08] Пользователь Facebook
........................................
НАШИ ПОЗДРАВЛЕНИЯ

ВЫ СТАЛИ ПОБЕДИТЕЛЕМ GIVEAWAY ОТ БЛОГЕРОООВ!

ВАШ ДЕНЕЖНЫЙ ПРИЗ ДО 150 000 руб

Забрать вы его можете по ссылке ВЫШЕ
————————————————————————————————————————
•[25.10.2020 18:36:21] Пользователь Facebook
........................................
Hey! My name is Katrin! I'm 26
https://www.instagram.com/p/CGkipBQsAGj/

————————————————————————————————————————
•[02.11.2020 11:43:04] Пользователь Facebook
........................................
Здравствуйте

Мы видим, что у Вас замечательный аккаунт с прекрасным визуалом

Но, к сожалению, инстаграм всегда мешает нам стать успешными, урезая охваты на публикации и показывая их всего 15-20% ваших подписчиков и пользователей инстаграма

Но мы знаем, что Вам нужно С нашим лучшим инструментом и новыми стратегиями мы сможем поднять Ваши охваты и конверсию до 60%

Скорее пиши нам @rocket_active_chat Есть бесплатный тариф
————————————————————————————————————————
•[07.12.2020 21:08:01] Пользователь Facebook
........................................
ДAPИМ ФИТНEC КАРТУ дpyгy пpи покyпке НОВOГОДНEЙ ФИТНEС КАPТЫ нa 6 мeсяцев.

Пеpeходи в аккayнт зa пoдapкoм @safarifitnessbarnaul

или звони пo нoмеpy

Сафapи Гулливер (Крacноаpмeйский 51А): 760-260
Сaфapи Парк (Энтyзиастoв 12В): 760-760
https://www.instagram.com/_u/safarifitnessbarnaul



Кликните здесь для просмотра всего текста

Цитата Сообщение от NeoMatrix Посмотреть сообщение
я не умею им пользоваться
Откройте PowerShell_ISE.exe, вставьте код, укажите параметры, запустите.

Цитата Сообщение от NeoMatrix Посмотреть сообщение
вообще я живу на линухе и PS у меня нету
https://www.cyberforum.ru/post14318448.html
2
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8543 / 3423 / 105
Регистрация: 24.05.2011
Сообщений: 14,651
Записей в блоге: 8
21.01.2021, 16:20  [ТС]
Цитата Сообщение от Punkt5 Посмотреть сообщение
вот скрипт на VBS из старых запасов с минимальной доработкой.
Сделал согласно инструкции: выбрал все message_1.json с переименованием в message_1 (XXX).json в отдельную папку, в этой же папке создал Decoder.vbs с содержимым из цитируемого поста, выполнил двойной клик по нему.
Результат: в этой же папке появились message_1 (XXX).txt с содержимым в нужном виде.
Итог: отлично!
Цитата Сообщение от Karen87 Посмотреть сообщение
запустите приложенный код
Результат запуска
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
21.01.2021, 16:27
Цитата Сообщение от NeoMatrix Посмотреть сообщение
Результат запуска
Ну уже неактуально конечно, но на будущее, если будете запускать скрипты powershell и будет возникать подобная ошибка, то допишите следующий параметр с атрибутом:
Windows Batch file
1
-executionpolicy bypass
1
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
21.01.2021, 16:32
Цитата Сообщение от NeoMatrix Посмотреть сообщение
Результат запуска
Введение в PowerShell
1
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8543 / 3423 / 105
Регистрация: 24.05.2011
Сообщений: 14,651
Записей в блоге: 8
21.01.2021, 16:48  [ТС]
Цитата Сообщение от alpap Посмотреть сообщение
макрос для excel
Не выполнял. Результат пока не известен.
Цитата Сообщение от YuS_2 Посмотреть сообщение
вот такой, предварительный скрипт powershel
Создал папку JSON, положил туда все message_1 (XXX).json , рядом с этой папкой положил Decoder1_YuS_2.ps1
Результат: тот же, как и на предыдущем скрине - запрещено выполнение сриптов PS
Цитата Сообщение от iSmokeJC Посмотреть сообщение
особо заморачиваться не стал, скрипт колхозный. Но коль бОльшего и не требуется
Выполнял на собственном линуксовом хосте.
Выбрал все message_1.json с переименованием (собственным скриптом) в отдельный каталог в ./message_XXX.json, выполнил скрипт - в том же каталоге появились message_XXXtxt с нужным содержимым.
Т.к. мне в линуксе точка в имени значения не имеет - результат отличный. Для исправления недочёта чуть-чуть подправил скрипт - добавил точку в '.txt', немного пошаманил с переменной path
Итог: Отлично!
Цитата Сообщение от Fors1k Посмотреть сообщение
code
Не выполнял. По причине заведомой невозможности выполнить по той же причине запрета на PS-скрипты.

Резюме:
Всем вам, друзья, огромное сердечное спасибо за отклик, за помощь, за скрипты, за участие.
Те PS-скрипты, что не отработали - не ваша вина. Это целиком и полностью проблема на данном хосте. К сожалению, я не могу по своему хотению без указания начальства (это ограничение ради безопасности, которое устанавливал не я) на данном хосте выдать разрешение на их выполнение и посему - не могу проверить скриптов корректность и увидеть результат их работы.
Всем ещё раз спасибо.
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
21.01.2021, 17:29
Цитата Сообщение от NeoMatrix Посмотреть сообщение
Не выполнял. По причине заведомой невозможности выполнить по той же причине запрета на PS-скрипты.
Это ограничение не имеет отношения к
Цитата Сообщение от Fors1k Посмотреть сообщение
Цитата Сообщение от NeoMatrix Посмотреть сообщение
я не умею им пользоваться
Откройте PowerShell_ISE.exe, вставьте код, укажите параметры, запустите.
Вот так:
Миниатюры
Перекодировка JSON в TXT  
1
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8543 / 3423 / 105
Регистрация: 24.05.2011
Сообщений: 14,651
Записей в блоге: 8
21.01.2021, 17:52  [ТС]
Цитата Сообщение от Karen87 Посмотреть сообщение
но на будущее, если будете запускать скрипты powershell и будет возникать подобная ошибка
Хорошо. Выполню - отпишусь. Но уже, как минимум, завтра.
Сама по себе задача уже, действительно, как вы правильно поняли, уже выполнена, то бишь, уже неактуальна.

Собственно, среди полученных txtшников (я их предварительно cat *txt >> file) найдены нужные по именам отправителей-получателей, отобраны в отдельную директорию, отсортированы по датам, проименованы (in%date%.txt, out%date%.txt) и переданы менеджерам.

На данный момент мне важнее вернуть всем вам результаты (как оно отработало, какой выхлоп и т.д.) выполнения ваших скриптов. Ибо обещал. Ну, мало-ль у кого могут обнаружиться какие мелкие недочёты, которые вы сами для себя отметите на будущее. Я в любом случае благодарен всем и уже получил тот результат, который был нужен.
В смысле, парни, я отлично понимаю, как это так в абстракции в голове порешать траблу, которую руками потрогать нельзя, насколько сильно потом хочется знать результат своих расчётов. И вот именно это я вам и хотел вернуть.
5
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
21.01.2021, 21:16
NeoMatrix, На всякий случай:
Любой скрипт powershell можно выполнить не изменяя политики выполнения скриптов. Вот, такой вот загадочный микрософт
По умолчанию запретили запуск не подписанных скриптов и тут же сделали лазейку, обходящую этот запрет... загадка века, так сказать...
В общем, вот батник, выполняющий скрипт, без изменения политики, выше уже предлагалось это решение, но так будет проще:
Windows Batch file
1
2
3
4
5
@echo off
echo Выполняем...
powershell -ex bypass .\script.ps1
echo Готово.
pause
Но там, скорее всего, вылезет ещё одна проблема...
Хост, как я понимаю, Win 7?
Если да, то эта инструкция #requires -v 3.0 не позволит моему скрипту выполниться... для его запуска потребуется обновление powershell.
В принципе, можно привести скрипт к возможности запуска в PS v2.0 и он будет даже сохранять данные в JSON формате, но для конвертирования в текст, вроде бы, придется городить новый код, т.к. штатных командлетов в той версии ещё не было...
2
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
21.01.2021, 21:30
NeoMatrix, сразу добавлю к сказанному выше ссылку на обновление, если оно все же понадобится. https://www.microsoft.com/en-u... x?id=54616
2
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8543 / 3423 / 105
Регистрация: 24.05.2011
Сообщений: 14,651
Записей в блоге: 8
21.01.2021, 21:47  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
В случае Windows придётся купить Excel
Небольшое уточнение. Исходя из начального
Цитата Сообщение от NeoMatrix Посмотреть сообщение
машинка эта с винь7 не моя - офисная
логично было предполагать сразу, что Excel на хосте есть. И, в общем, да, на данной машине оно есть и я в следующий раз этот код тоже выполню и сообщу результат. Вообще же, мне так думается (при учёте, что я ещё не знаю, какой будет от него выхлоп), этот стострочник во всей этой теме самый шикарный. В конце концов, как утверждает его автор - его выхлоп более нагляден, чем простая пачка txtшников, которые приходится сортировать дополнительно. Для меня, конечно, эта сортировка (линуксовым башем) особой трудности не представляет, но таки для офис-менеджеров - куда более наглядно и привычно представление в виде таблицы excel с локальными линками на исходные файлы. Уж комбайн - так комбайн! И красив в результат, и комментирован, что всё более-менее понятно даже офис-менеджеру... Осталось только его протестировать. Если оно отработает отлично, то отмечу "лучшим", если только позволит движок форума. Ибо есть ограничение - не может по логике вещей быть много "лучших". Лучшим может быть только один. А вот отнимать у других сей флаг мне очень не хочется.
Так что, други - прошу дождаться результатов моих тестов.
1
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
22.01.2021, 08:58
Цитата Сообщение от NeoMatrix Посмотреть сообщение
Уж комбайн - так комбайн!

Мы тут уже немного оффтопим, но раз уж про комбайн зашел разговор... то для изучения пригодится:
Установка powershell в Linux
Установка .NET в Linux

Цитата Сообщение от NeoMatrix Посмотреть сообщение
выхлоп более нагляден, чем простая пачка txtшников, которые приходится сортировать дополнительно.
Ни сортировка, ни сама выборка того, что требуется, в powershell не представляет особых трудностей. Вся трудность в постановке задачи.
Например:
1. Необходимо раскодировать исходные .json файлы
2. Требуется получить информацию по заданному шаблону. Несколько или один из адресов отправителей, необходимые даты, или ещё по каким-либо критериям отбора - шаблон можно задать, например в текстовом файле в определенном заранее формате, типа:
Отправитель 1 - Заголовок - Дата
Отправитель 2 - Заголовок - Дата
и т.д. построчно
3. Вывести информацию необходимо в формате:
a) Отправитель
б) Дата
в) Путь цепи переписки
... ??
4. Для последующего анализа, информацию необходимо вывести в единый текст или .csv, или ещё в какой-либо формат.

Вот по такому ТЗ проще автоматизировать действия... конечно, в процессе работы, могут возникнуть нюансы, но их решить уже будет гораздо проще...

Цитата Сообщение от NeoMatrix Посмотреть сообщение
Если оно отработает отлично, то отмечу "лучшим"
Отметки - вообще дело третье, главное - сама задача и результат... если задача интересна (особенно, если она представляет интерес в практическом смысле, а не академическом, т.е. если это не бессмысленная задача для обучения студентов), то скорее всего, будет куча различных решений, как в данном случае...
И конечно, конечный результат, тоже представляет интерес для того, кто решение предлагал... в виду того, что реальные исходные данные невозможно выложить в общий доступ...
2
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
22.01.2021, 10:54
Цитата Сообщение от NeoMatrix Посмотреть сообщение
А вот отнимать у других сей флаг мне очень не хочется.
И не надо, я так считаю. Это просто одно возможное решение из множества, которое при определённом наборе вероятностей могло бы упростить и ускорить решение задачи: разобраться в разрозненном наборе информации с привлечением неITспециалистов. А могло бы и не помочь.
Цитата Сообщение от YuS_2 Посмотреть сообщение
И конечно, конечный результат, тоже представляет интерес для того, кто решение предлагал... в виду того, что реальные исходные данные невозможно выложить в общий доступ
Что есть, то есть. Я вот мучился, сможет ли вообще этот эксел-файл помочь, если в в очередном json-файле лежит кусок долгой активной переписки, включающий всю предыдущую историю? Или это уже визуально не будет восприниматься при таких объемах, и прежде чем идти с этим файлом к неITспециалистам на разборки, придётся как-то переструктурировать информацию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2021, 10:54

Чтение из txt файла JSON формат
Собственно есть файлик test.txt: { &quot;response&quot;: { &quot;players&quot;: } } Подскжаите пожалуйста, как мне прочитать это из...

Извление текста из .txt и преобразование в json
Есть текстовый файл, необходимо извлечь текст и преобразовать в json формат. Как организовать работу парсера через консоль, передав...

Перевод файла из формата txt в формат json
Есть файлы такого типа разделённые звездочками *** Новости Украины 5:40 AM - 13 Sep 2018 User: 24todaynetua. Европарламент поддержал...

Получить данные в формате json из txt файла
Не могу разобраться с проблемой. у меня есть ссылка на текстовый файл ...

Загрузить данные из JSON в виде txt файла в массив
Прошу помочь со следующим. У меня есть текстовый файл с расширением .txt как я понял в jQuery можно из него данные загрузить с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru