2

Я делаю пакетный сценарий, который создает сценарий .json если он не найден в определенном месте. Если это необходимо сделать, у меня также есть пакетный скрипт, вставляющий весь код по умолчанию для JSON. Я могу сделать копию оригинала 1:1, из которого я делаю новый, но я хочу знать, есть ли более быстрый способ сделать это без необходимости копировать строку кода для строки с текущим синтаксисом, который я использую. с помощью. Я вставляю код с помощью команды ECHO следующим образом:

ECHO %CODELINE%>> "%JSONSCRIPT%

Я хочу знать, могу ли я что-то сделать, чтобы каждая строка не начиналась с ECHO и заканчивалась >> "%JSONSCRIPT% . Это возможно? Вот фрагмент моего сценария для одного из создаваемых файлов JSON:

: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"

3 ответа3

2

Почему бы вам не просто создать "шаблон" текстовый файл , который имеет все фактический текст , который вы хотите, а затем ссылаться , что в сценарии вместо этого?

Например, ваш текстовый файл шаблона будет содержать:

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

И ваш сценарий будет просто иметь:

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

2

Шаблон обычно используется для создания различного контента. Таким образом, пакет имеет дополнительное использование для вставки переменных в шаблон.

Этот пакет упрощает вывод, используя (кодовый блок) с перенаправлением:

@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%"

И создает несколько файлов за один прогон:

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

С таким содержанием:

> 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",
      }
    }
  ]
}
0

После некоторого копания, я наткнулся на этом вопрос о переполнении стека , который имеет ответ (по grawity) , что я модифицированный для работы в порядке , я искал. ECHO все еще должен быть объявлен в начале каждой строки, которую вы хотите вставить в текстовый документ / скрипт, чтобы это работало. Начните блок кода с одной левой круглой скобки в его собственной строке и завершите правой круглой скобкой в новой строке, за которой следует > "%JSONFILE%" . Вот кодовый блок, который я использовал для достижения этой цели:

: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%"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .