Existe uma maneira mais rápida de inserir texto em um documento com várias linhas usando o comando ECHO?

2

Estou fazendo um script em lote que cria um script .json , se não for encontrado em um local específico. Se precisar ser feito, também tenho meu script em lote para inserir todo o código padrão do JSON. Eu posso fazer uma cópia 1: 1 do original que eu estou fazendo o novo, mas eu quero saber se há uma maneira mais rápida de fazer isso sem ter que copiar a linha de código para a linha com a sintaxe atual que eu sou usando. Estou inserindo o código por meio do comando ECHO dessa maneira:

ECHO %CODELINE%>> "%JSONSCRIPT%

Eu quero saber se há algo que eu possa fazer para que cada linha não precise começar com ECHO e terminar com >> "%JSONSCRIPT% . Isso é possível? Aqui está um trecho do meu script para um dos arquivos JSON a serem criados:

:MAKEJSON
BREAK>"Scripts\JSON1.json"
ECHO {>> "Scripts\JSON1.json"
ECHO   "list": [>> "Scripts\JSON1.json"
ECHO     {>> "Scripts\JSON1.json"
ECHO       "var": {>> "Scripts\JSON1.json"
ECHO         "showName": "Example 01",>> "Scripts\JSON1.json"
ECHO         "targetName": "TBD">> "Scripts\JSON1.json"
ECHO       },>> "Scripts\JSON1.json"
ECHO       "type": {>> "Scripts\JSON1.json"
ECHO         "showName": "Example 02",>> "Scripts\JSON1.json"
ECHO         "typeName": "[Test]",>> "Scripts\JSON1.json"
ECHO       }>> "Scripts\JSON1.json"
ECHO     },>> "Scripts\JSON1.json"
ECHO     {>> "Scripts\JSON1.json"
ECHO       "var": {>> "Scripts\JSON1.json"
ECHO         "showName": "Test 2",>> "Scripts\JSON1.json"
ECHO         "varName": "[Test2]">> "Scripts\JSON1.json"
ECHO       },>> "Scripts\JSON1.json"
ECHO       "type": {>> "Scripts\JSON1.json"
ECHO         "showName": "Sampletext",>> "Scripts\JSON1.json"
ECHO         "typeName": "TBD",>> "Scripts\JSON1.json"
ECHO       }>> "Scripts\JSON1.json"
ECHO     }>> "Scripts\JSON1.json"
ECHO   ]>> "Scripts\JSON1.json"
ECHO }>> "Scripts\JSON1.json"
    
por Mr. Mendelli 24.05.2018 / 01:12

3 respostas

0

Depois de algumas pesquisas, me deparei com pergunta no Stack Overflow que tem uma resposta (por grafite ) que modifiquei para trabalhar da maneira que eu estava procurando. ECHO ainda deve ser declarado no início de cada linha que você deseja inserir em seu documento / script baseado em texto para que isso funcione. Comece o bloco de código com um único parêntese esquerdo em sua própria linha e termine com um parêntese direito em uma nova linha, seguido por > "%JSONFILE%" . Aqui está o bloco de código que usei para isso:

:MAKEJSON
BREAK>"Scripts\JSON1.json"
(
ECHO {
ECHO   "list": [
ECHO     {
ECHO       "var": {
ECHO         "showName": "Example 01",
ECHO         "targetName": "TBD"
ECHO       },
ECHO       "type": {
ECHO         "showName": "Example 02",
ECHO         "typeName": "[Test]",
ECHO       }
ECHO     },
ECHO     {
ECHO       "var": {
ECHO         "showName": "Test 2",
ECHO         "varName": "[Test2]"
ECHO       },
ECHO       "type": {
ECHO         "showName": "Sampletext",
ECHO         "typeName": "TBD",
ECHO       }
ECHO     }
ECHO   ]
ECHO }
) > "%JSONFILE%"
    
por 24.05.2018 / 23:54
2

Por que você não cria um arquivo de texto de "modelo" com todo o texto que deseja e, em vez disso, faz referência a esse em seu script?

Por exemplo, seu arquivo de texto de modelo conteria:

{
  "list": [
    {
      "var": {
        "showName": "Example 01",
        "targetName": "TBD"
      },
      "type": {
        "showName": "Example 02",
        "typeName": "[Test]",
      }
    },
    {
      "var": {
        "showName": "Test 2",
        "varName": "[Test2]"
      },
      "type": {
        "showName": "Sampletext",
        "typeName": "TBD",
      }
    }
  ]
}

E o seu script simplesmente teria:

type "Scripts\template.txt" >> "Scripts\JSON1.json"

    
por 24.05.2018 / 02:07
2

Um modelo geralmente é usado para criar conteúdo variado. Assim, um lote tem o uso adicional para inserir variáveis no modelo.

Este lote simplifica a saída usando um (bloco de código) com redirecionamento:

@Echo off

For /L %%n in (1,2,10) Do Call :MAKEJSON %%n

Goto :Eof
:MAKEJSON
Set /A n=100 + %1,m=101 +%1,T = %1 + 1
Set  "JSONSCRIPT=Script\JSON%1.json"
( Echo={
  Echo=  "list": [
  Echo=    {
  Echo=      "var": {
  Echo=        "showName": "Example %n:~-2%",
  Echo=        "targetName": "TBD"
  Echo=      },
  Echo=      "type": {
  Echo=        "showName": "Example %m:~-2%",
  Echo=        "typeName": "[Test]",
  Echo=      }
  Echo=    },
  Echo=    {
  Echo=      "var": {
  Echo=        "showName": "Test %T%",
  Echo=        "varName": "[Test2]"
  Echo=      },
  Echo=      "type": {
  Echo=        "showName": "Sampletext",
  Echo=        "typeName": "TBD",
  Echo=      }
  Echo=    }
  Echo=  ]
  Echo=}
) >"%JSONSCRIPT%"

E cria vários arquivos em uma execução:

│   MakeJson.cmd
│
└───script
        JSON1.json
        JSON3.json
        JSON5.json
        JSON7.json
        JSON9.json

Com conteúdo como este:

> type script\JSON5.json
{
  "list": [
    {
      "var": {
        "showName": "Example 05",
        "targetName": "TBD"
      },
      "type": {
        "showName": "Example 06",
        "typeName": "[Test]",
      }
    },
    {
      "var": {
        "showName": "Test 6",
        "varName": "[Test2]"
      },
      "type": {
        "showName": "Sampletext",
        "typeName": "TBD",
      }
    }
  ]
}
    
por 24.05.2018 / 12:57