Как отобразить двойную кавычку в файл без новой строки в Batch? - PullRequest
1 голос
/ 20 мая 2019

Я хочу написать " знак, используя пакет в файле.

echo| set /p=""" >> abc.txt

Это не работает так, как задумано, поскольку выдает ошибки при отправке данных в мой файл.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 20 мая 2019

Ваша идея "три цитаты" не была плохой.Но из-за некорректных кавычек синтаксический анализатор не обрабатывает их правильно.Вы должны убежать от одного из них (один из внешних - выход из среднего не работает):

<nul set /p =^""" >> abc.txt

или

<nul set /p =""^" >> abc.txt

это подробно описывает, как cmd выполняет синтаксический анализ.

Также я изменил echo| set /p... с <nul set /p, что намного быстрее.Трубопровод генерирует два новых процесса cmd, потому что каждая сторона трубы выполняется в отдельном процессе, который стоит времени.

0 голосов
/ 20 мая 2019

Это должно дать вам желаемый результат для добавления одинарных, двойных кавычек ":

echo| set /p=^""^">>abc.txt

Где это даст результат двойной кавычки ""

echo| set /p=^"""^">>abc.txt

Чтобы разбить его, мы избегаем открывающих и закрывающих кавычек ^" с желаемым результатом между ними, эти примеры показывают желаемые результаты в скобках, с экранированными " вне скобок ^"(")^" или ^"("")^"

Короче говоря, независимо от того, сколько двойных кавычек вы хотите добавить между ними, до тех пор, пока открываются и закрываются двойные кавычки.

Итак, используйте приведенные в скобках примеры, как указано выше, если вы действительно делаете:

echo echo| set /p=^"(")^"

он вернет только результат (")

Примечание синтаксический анализ отличается при использовании echo| по сравнению с решением @ stephan, использующим <nul в качестве канала, который инициирует второй процесс, а <nul - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...