Arquivo em lote para ler um arquivo e criar um JSON?

0

Eu tenho um arquivo de texto com algumas dezenas de entradas no seguinte formato:

code: SETX
id: 1
msg: Message for setx

code: SETY
id: 2
msg: Message for sety
msg_ja: Japanese message for sety

Como você pode ver, algumas entradas podem ter chaves que não estão presentes em outras (por exemplo: msg_ja está na segunda entrada, mas não na primeira).

O que eu preciso agora é ler este arquivo de texto e criar um JSON dele. Por exemplo:

global_var.SETX = {
  id: 1,
  msg: "Message for setx"
};

global_var.SETY = {
  id: 2,
  msg: "Message for sety",
  msg_ja: "Japanese message for sety"
};

Como posso fazer isso usando um arquivo em lotes?

thameera
fonte

Respostas:

1

Aqui está um começo. Há apenas um pequeno problema: o último item no bloco JSON ainda termina com uma vírgula, mas esse trecho de código o ajudará.

@echo off
Setlocal EnableDelayedExpansion

set first=1

for /f "tokens=1,2" %%i in (input.txt) do (    
    if "%%i"=="code:" (
        if !first! neq 1 (
            echo }
        )               
        echo global_var.%%j = {
    ) else (
        echo   %%i %%j,
    )
    set first=0
)
echo }
Berend
fonte
Obrigado! Isso é o que eu tenho procurado. Uma pergunta: se não houver cotações em torno dos valores do lado direito, como devo alterar esse script? (quebra em espaços)
thameera
Eu acredito que "tokens = 1 *" vai cuidar disso
Berend