Как добавить новую строку в отображаемую переменную - PullRequest
0 голосов
/ 25 февраля 2020

Полный код ниже, извините, если вопрос выглядит беспорядочным.

Я пытаюсь создать пакетный файл, который добавляет справку do c в указанную директорию, но do c потребуется иметь новые линии. Проблема в том, что я сохраняю текст, который помещается в txt do c, используя var.

Я бы хотел, чтобы справка по c выглядела так:

set help=helper \n new line \n\n more space

Что бы выглядело так: (извините, пришлось использовать код, потому что новая строка не может быть сделано нормально)

helper
new line

more space

Я видел такие вещи, как приведенный ниже пример, но когда я его использую, текст в do c просто говорит, что echo включено или echo выключено, в зависимости от того, или нет эхо включено (код найден здесь ):

setlocal EnableDelayedExpansion
set LF=^


rem TWO empty lines are required
echo This text!LF!uses two lines

И, кроме того, этот код выглядит так, как будто его новая строка var делает пробел, а не ПРОСТО новую строку как "helper" и "new line" в приведенном выше примере. Я бы хотел, чтобы «\ n» поместил следующий текст в следующую строку, а «\ n \ n» - чтобы текст располагался на две строки после предыдущего текста, например, «больше места» в приведенном выше примере. , Короче говоря, я бы хотел, чтобы "\ n" была новой строкой, а "\ n \ n" - разрывом строки.

Спасибо, что нашли время прочитать это, Я ценю все ответы и / или советы. Если вы не понимаете, что я имею в виду, пожалуйста, не стесняйтесь спрашивать меня в комментариях. Я довольно новичок в этом, поэтому мое использование некоторой терминологии, вероятно, довольно плохо. Кроме того, извините за разбег предложений и / или плохую грамматику / пунктуацию. Я просто немного устал, и я забыл свои классы Engli sh 1, я полагаю.

Мой полный код:

@echo off

:start
cls
echo -create
echo -download
echo.
set /p PROGRAM= What do you want to do?:
goto %PROGRAM%

:create
cls
REM saves the text types to the helpDir var
set /p helpDir=Where do you want to save the help file?: 

REM makes the text used in the help.txt file, \n would be the new line,
set help=helper \n new line \n\n more space
REM I want to make it look like this:
REM helper
REM new line
REM
REM more space

REM Makes the "help" text to go to a .txt file, then saves the .txt file to the dir specified.
echo %help% > "%helpDir%\help.txt"
pause
goto start

REM not finished yet, please ignore
:download
title Custom Text File
cls
set /p help=Where do you want to save the help doc at?;
set /p txt=Made a command
echo %txt% > "dir
Pause

1 Ответ

1 голос
/ 25 февраля 2020

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

setlocal EnableDelayedExpansion
(set LF=^
%=DO NOT REMOVE THIS=%
)
echo This text!LF!uses two lines

Если вы видите пробелы в выходных данных (вместо перевода строки), проверьте и удалите пробелы в определении LF .

Из вашего комментария ваша проблема в процентном расширении.
Из вашего связанного поста :

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

Простое правило: всегда расширяйте переменные, содержащие символы перевода строки, только с отложенным расширением.

set help=Line1 \n Line2
echo !help!>output.txt
...