Чи є більш швидкий спосіб вставити текст у документ декількома рядками за допомогою команди ECHO?


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"

Відповіді:


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

Після деякого копання я натрапив на це запитання щодо стека переповнення, який містить відповідь (за важкістю ), яку я змінив, щоб працювати так, як я шукав. 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%"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.