Regex: захват значений между кавычками

Одиночный и двойной знак — «Ёлочка»

Работая с текстовым редактором, зачастую приходится ставить разные символы и знаки препинания. Считается, что в документации в обязательном порядке должны применяться печатные кавычки, а в рукописном документе уже в виде двойных запятых. Не всегда с первого раза получается поставить кавычки в Ворде, хотя если один раз правильно запомнить комбинацию клавиш, то в следующий раз, к примеру, вставить кавычку ёлочку, не окажется столь затруднительным делом.

Вариант 1: Одинарные угловые кавычки

 Ставятся посредством сочетания клавиш Shift + «Б» и «Ю». Чтобы сделать открытую:

  1. Сменить на английскую раскладку клавиатуру «Shift+Alt»;
  2. Удерживая кнопку «Shift» нажать на букву «Б»;
  3. Написать необходимое слово.

Чтобы добавить закрытую:

  1. Сменить раскладку клавиатуры на английскую;
  2. Зажать кнопку «Shift» нажать на букву «Ю»;
  3. Добавлены одиночные угловые знаки.
  4. Сменить раскладку на русскую и продолжать работу.

Способ 1

Самый легкий и быстро запоминающийся способ это комбинация клавиш «Shift+2». Нужно:

  1. Установить указатель мыши на нужное место;
  2. Переключить метод ввода букв на русскую клавиатуру (если это необходимо), комбинацией «Shift +Alt»;
  3. Зажать клавишу «Shift» и нажать на цифру «2» на верхней цифровой панели клавиатуры.
  4. Ввести соответствующее слово и повторить 2 и 3 пункт.

Примечание! Обратите внимание на курсор, он должен быть отделен от предыдущего слова пробелом, иначе получится не открывающаяся кавычка елочка, а закрывающаяся

Ставить пробелы и проверять их на наличие обязательно.

Способ 2

Парные кавычки «елочки» можно поставить посредством кода. Обязательно надо включить кнопку «Num lock».

1) Чтобы открыть двойную кавычку надо:

« — удерживать кнопку «Alt» и набрать четыре цифры «0171». Работать с цифровой клавиатурой, которая расположена справа от буквенной клавиатуры.

Внимание! Не забудьте активировать кнопку «Num LOCK». 2) Чтобы закрыть знак:

2) Чтобы закрыть знак:

» — также удерживать «Alt» и напечатать «0187».

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

Способ 3

Этот способ написания двойных треугольных кавычек довольно прост. Посредством функции «Символ» в Ворде вставляется огромное количество символов и треугольный знак препинания не исключение. Выполните следующие действия:

  1. Открыть в главном меню раздел «Вставка», нажать по кнопке «Символ» и «Другие символы»;
  2. Во всплывающем окне «Символ», указать в поле «Набор» — «Дополнительная латиница-1»;
  3. Выбрать нужную двойную кавычку и нажать на «Вставить»;
  4. Готово!

Способ 4

Если захотелось удивить окружающих, тогда этот способ точно для вас. Необходимо:

  1. Переключиться на английскую раскладку (Shift+Alt);
  2. Напечатать буквы «ab» и нажать одновременно кнопки «Alt» и «X» — в итоге получится открывающийся символ («);
  3. Закрывающийся символ ставится так: «bb»  и нажатие кнопок «Alt» и «X» — в итоге (») символ готов.

В операторах SELECT

Для оператора SELECT, интерпретируемого драйвером ODBC, могут использоваться несколько иные кавычки. Обычно для названий полей и таблиц следует использовать прямые двойные кавычки (Alt + 0034), а для литералов — прямые одиночные кавычки (Alt + 0039) и не следует использовать апострофы. Однако в некоторых драйверах ODBC использование апострофов не только допускается, но и считается предпочтительным. В таком случае созданные операторы SELECT содержат апострофы в качестве символов кавычек.

Пример кавычек в Microsoft Access

Microsoft Access ODBC Driver 3.4 (входящий в Microsoft Access 7.0) во время анализа оператора SELECT принимает следующие кавычки:

Кавычки в операторе SELECT
Описание символа Символы

Имена полей и имена таблиц:

или » » или ` `

Строковые литералы:

‘ ‘

В других базах данных могут применяться другие обозначения.

Связанная информация

может использоваться только как escape-символ в не цитируется струны — внутри строк в двойных кавычках, не является особенным и рассматривается как буквальное.
ПРЕДОСТЕРЕЖЕНИЕ: Использование в параметрах, переданных в заявление нарушено (это относится к обоим видам использования : вызов другого командного файла или двоичного файла и вызов подпрограммы в том же командном файле):
экземпляры в двойные кавычки ценности необъяснимо вдвое, изменение передаваемого значения: например, если переменная содержит буквальное значение , назначает (!) в (первый параметр) в подпрограмме .
Без кавычек использование с участием является полностью сломан в этом больше не может использоваться для экранирования специальных символов: например, тихо ломается (вместо буквального тоже , как и в случае без ) — никогда даже не вызывается (!), по крайней мере, в Windows 7.
Спасаясь от буквального это особый случайк сожалению, который требует особого синтаксиса в зависимости от того, указана ли строка в командная строка vs. внутри командного файла; см. https://stackoverflow.com/a/31420292/45375
Вкратце: внутри командного файла используйте %%. В командной строке % невозможно избежать, но если вы поместите ^ в начале, конце или внутри имени переменной в не цитируется строка (например, echo %^foo%), вы можете предотвратить расширение переменных (интерполяцию); % экземпляры в командной строке, которые не являются частью ссылки на переменную, обрабатываются как литералы (например, 100%).
В общем-то, для безопасной работы со значениями переменных, которые могут содержать пробелы и специальные символы:
Присвоение: Приложить и то и другое имя переменной и значение в не замужем пара двойных кавычек; например., присваивает буквальное значение изменять (напротив, сделает двойные кавычки частью значения). Буквальный побег экземпляры как (работает только в пакетных файлах — см. выше)

Справка: Ссылки на переменные в двойных кавычках чтобы убедиться, что их значение не интерполируется; например., не подчиняется стоимости для интерполяции и печати (но обратите внимание, что двойные кавычки тоже неизменно печатаются). Напротив, проходит буквально к , интерпретирует как оператор последовательности команд, и поэтому пытается выполнить команду с именем

Также обратите внимание на приведенное выше предостережение о повторном использовании с заявление.
Внешний программы обычно заботятся об удалении параметров, заключенных в двойные кавычки, но, как уже отмечалось, в пакетных файлах вы должны делать это самостоятельно (например, чтобы удалить заключительные двойные кавычки из 1-го параметра) и, к сожалению, я не знаю прямого способа получить чтобы точно распечатать значение переменной без заключительные двойные кавычкиНил предлагает а for-основанный обходной путь, который работает если значение не имеет встроенных двойных кавычек; например.:set ‘var=^&’)|;,%!’ for /f ‘delims=’ %%v in (‘%var%’) do echo %%~v
.
делает не признать не замужем-цитаты как разделители строк — они рассматриваются как литералы и обычно не могут использоваться для разделения строк с внедренными пробелами; также следует, что токены, примыкающие к одинарным кавычкам, и любые токены между ними обрабатываются как некотируемые и интерпретируется соответственно.
Однако, учитывая, что целевые программы в конечном итоге выполняют свой собственный синтаксический анализ аргументов, некоторые программы, такие как Ruby, действительно распознают строки в одинарных кавычках даже в Windows; в отличие от исполняемых файлов C / C ++, Perl и Python не узнайте их. Однако даже если это поддерживается целевой программой, не рекомендуется использовать строки в одинарных кавычках, поскольку их содержимое не защищено от потенциально нежелательной интерпретации с помощью cmd.exe.

6 ответов

Лучший ответ

Вы можете использовать двойные кавычки в качестве разделителя с синтаксисом, например:

При запуске в командной строке использование должно дать вам , а 4 жетона — пони.

Применяя технику к вашему исходному вопросу, это должно работать в вашем командном файле:

Подробности

Я не специалист по , но он может помочь представить обычный как один комбинированный аргумент, передаваемый FOR. Уловка с экранированием каретки в позволяет обойтись без кавычек, но при этом трактует последовательность как один аргумент. Я использовал здесь небольшую творческую аналогию, и эффект не универсален для всей оболочки. Например. вы не можете использовать (что имеет смысл, поскольку является допустимым символом имени файла).

Тестовые примеры

При достаточном экранировании вы можете быстро проверить исходный образец в командной строке:

Другие, играющие с этим, могут захотеть создать файл testcases.txt :

И запустите что-то вроде:

Чтобы проверить результаты для множества входных данных. В этом случае он должен дать:

И последний пример:

Наконец, обратите внимание, что я тестировал это на Windows Server 2003. 43

rkagerer
4 Ноя 2012 в 10:43

43

rkagerer
4 Ноя 2012 в 10:43

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

Это должно сработать.

-3

Diego Queiroz
18 Авг 2014 в 20:52

Я думаю, что в большинстве случаев проще найти символы, окружающие кавычки, и удалить цитату на более позднем этапе. Если мы хотим извлечь значения из определенной строки в XML-файле

Действуем так

В общем, кавычки сами по себе не являются разделителями, поэтому в большинстве случаев это поможет.

user3049378
29 Ноя 2013 в 12:34

Я не нашел способа сделать это возможным. Может быть, Джеб подключается с более глубокими знаниями, чем я. Или же разделите строку, используя и пробел в качестве разделителей, и просто удалите кавычки вокруг результата:

3

Joey
22 Сен 2011 в 14:19

Я не верю, что это возможно — цитата () не может использоваться в качестве разделителя.

Однако одним из решений является сохранение всей строки в переменной среды и использование встроенной функции «замены» для замены цитаты чем-то другим, например . Затем вы можете использовать другой цикл for только для этой строки, чтобы разделить его по новому разделителю:

Небольшое пояснение … первый цикл помещает всю строку в переменную . Затем он копируется в переменную

Затем снова устанавливается с использованием встроенных функций поиска / замены наборов (обратите внимание, что здесь мы ссылаемся на переменную с помощью , которая выполняет замену). Наконец, мы анализируем эту единственную строку, чтобы поместить элемент в кавычки

Я надеюсь, что это имеет какой-то смысл.

5

icabod
22 Сен 2011 в 16:22

РЕДАКТИРОВАТЬ: это неправильно, см. мой комментарий позже : Как сказал Джои, похоже, нет возможности использовать цитату в качестве разделителя, ее можно использовать только как символ EOL. Это похоже на эффект синтаксического анализатора FOR-LOOP cmd.exe, поскольку он сканирует часть параметров и останавливает сканирование после цитаты, только параметр EOL = нарушает это, поскольку он всегда читает следующий символ без каких-либо ожиданий .

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

Итак, мое решение сначала создает неиспользуемый символ, заменяя все предыдущие вхождения. Я хочу использовать для замены кавычек, но чтобы сохранить все внутри кавычек и заменить его ранее на , но тогда он может столкнуться с существующим в тексте, поэтому сначала я заменяю все на , тогда это абсолютно без коллизий. После извлечения «цитируемого» текста мне нужно заменить $ R и $ D на их исходные значения, вот и все.

Образец текста: результаты до , как ожидалось

РЕДАКТИРОВАТЬ: способ есть! Я всегда тестировал такие вещи (и это терпит неудачу)

Но если убрать первую цитату, это работает.

8

jeb
9 Окт 2011 в 13:20

Управляющие последовательности с обратным слешем

В дополнении к роле экранирующего символа, обратный слеш также используется как часть обозначения в представлении определённых специальных символов, называемых управляющими кодами. Первые 32 символа в схеме кодирования ASCII, используемой для передачи команд телетайп подобным устройствам. Некоторые из этих кодов являются знакомыми (табуляция, возврат на одну позицию, разрыв страницы и возврат каретки), а другие нет (null, конец-передачи и acknowledge).

Управляющая последовательность Значение
\a Звонок («сигнал тревоги» — делает так, что компьютер издаёт сигнал)
\b Возврат на одну позицию
\n Новая строка. На Unix подобных системах это воспроизводит разрыв страницы.
\r Возврат каретки
\t Табуляция

Таблица выше приводит список некоторых популярных управляющих последовательностей с обратным слешем. Идея в таком представлении – с использованием обратных слешей – происходит из языка программирования C, она была принята многими другими, в том числе оболочкой.

Добавление опции «-e» к echo включит интерпретацию управляющих последовательностей. Вы также можете разместить их внутри $’ ‘. Здесь, используя команду sleep (простая программа, которая просто ждёт указанное количество секунд, а затем завершает работу), мы можем создать примитивный таймер обратного отчёта:

sleep 10; echo -e "Время просыпаться\a"

Мы также можем сделать это:

sleep 10; echo "Время просыпаться" $'\a'

Примыкание строк в Bash

В Bash не нужно указывать специальные символы (как, например, точку в PHP или знак плюс в JavaScript) для конкатенации (объединения) строк. Две строки, расположенные вместе, считаются объединёнными.

К примеру, я хочу с помощью команды echo вывести следующую строку:

test'quote1"quote2

То есть в этой строке кавычки двух типов.

Если я попробую экранировать одинарную кавычку и помещу строку в одинарные кавычки:

echo 'test\'quote1"quote2'

то у меня ничего не получится.

Но вариант помещения строки в двойные кавычки с последующей экранизацией двойных кавычек внутри, сработает нормально:

echo "test'quote1\"quote2"

Но можно обойтись вовсе без экранизации кавычек! Для этого часть строки с одинарной кавычкой помещаем в двойные кавычки (получается «test’quote1») а часть строки с двойной кавычкой помещаем в одинарные кавычки (получается ‘»quote2’). А затем собираем обе части вместе, проста ставя их в команде рядом друг с другом:

echo "test'quote1"'"quote2'

Одинарные кавычки (‘’) и двойные кавычки («»)

  • В СапострофИспользуется для указанияБуквенный символ

  • В СДвойные кавычкиИспользуется для указанияСтроковый литерал

    Является ли следующая процедура законной?

Перед анализом причины этого фрагмента кода есть совет.

Советы

  • Буквенный символСоставляется к соответствующемуКод ASCII
  • Строковый литералСоставляется к соответствующемуАдрес памяти

    Строка будет помещена в адресное пространство памяти после 0x08048000 после компиляции, и мы получим в программе адрес пространства памяти, где хранится эта строка символов, занимающая 4 байта

  • Первый параметр printf обрабатывается как адрес строки памяти
  • Низкое адресное пространство памяти (адресное пространство до 0x08048000) не может быть случайно доступно в программе

Из этого вы можете узнать причину ошибки.

Вот концепция, запутывающая код

Код должен быть изменен на

Один символ, заключенный в одинарные кавычки, представляет целое число ASCII

Символы, заключенные в двойные кавычки, представляют собой указатели символов

Компилятор C принимает сравнения символов и строк, но не имеет смысла

Компилятор C позволяет строкам присваивать значения символьным переменным, но получает только ошибки

Подробное описание

Кавычки используются для указания литеральной строки. Строку можно заключать в одинарные кавычки ( ) или двойные кавычки ( ).

Кавычки также используются для создания строки String. Строка Here — это строка, заключенная в одинарные кавычки или двойные кавычки, в которой кавычки обрабатываются буквально. Строка here может охватывать несколько строк. Все строки в этой строке считаются строками, даже если они не заключены в кавычки.

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

Строки

Правила предложения для этой строки немного отличаются.

Строка Here — это строка, заключенная в одинарные кавычки или двойные кавычки, в которой кавычки обрабатываются буквально. Строка here может охватывать несколько строк. Все строки в этой строке считаются строками, даже если они не заключены в кавычки.

Как и обычные строки, переменные заменяются значениями в строках, заключенных в двойные кавычки. В строках с одинарной кавычкой (String) переменные не заменяются значениями.

Здесь можно использовать текстовые строки для любого текста, но они особенно полезны для следующих типов текста:

  • Текст, содержащий литеральные кавычки
  • Несколько строк текста, например текст в HTML или XML
  • Текст справки для скрипта или документа функции

Строка в строке может иметь любой из следующих форматов, где представляет скрытый символ перевода строки или перехода на новую строку, который добавляется при нажатии клавиши Ввод .

Двойные кавычки:

Одинарные кавычки:

В любом формате закрывающие кавычки должны быть первыми символами в строке.

Строка here содержит весь текст между двумя скрытыми символами. В этой строке все кавычки обрабатываются буквально. Пример:

Выходные данные этой команды:

Использование строки «строка» может упростить, используя строку в команде. Пример:

Выходные данные этой команды:

В строках с одинарными кавычками (строки) переменные обрабатываются буквально и воспроизводится точно. Пример:

Выходные данные этой команды:

В строках, заключенных в двойные кавычки, переменные заменяются значениями. Пример:

Выходные данные этой команды:

Здесь строки обычно используются для назначения нескольких строк переменной. Например, следующая строка here присваивает $page переменной страницу XML.

Здесь также удобно использовать для ввода командлет, который преобразует строки в хэш-таблицы в виде строк.
Для получения дополнительной информации см. .

Примечание

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

Символы комментария (//, / * * /)

  • Первое впечатление от комментария считается очень простым и никак не влияет на функцию программы, и в этом нет необходимости вникать.
  • Но комментарии также являются наиболее важным инструментом в языке C. Если проект легко обслуживается, хорошие комментарии могут сократить время, необходимое для начала.
  • Существует два вида символов комментария
    • //
    • /* */

Правила аннотации

  • Компилятор используется во время компиляцииКосмосЗаменить весь комментарий
  • Строковый литерал== // вс/ ** / == не представляет символ комментария
  • / * * / тип заметкиНе может быть вложенным

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

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

Комментарии — это подсказки к коду, чтобы избежать раздувания и доминирования

Код с первого взгляда избегает комментариев

Табуляция и перенос строки в двойных кавычках

Обратный слеш в двойных кавычках позволяет экранировать не только кавычки и самого себя, но и некоторые другие символы. Наиболее популярные из них – это табуляция (длинный пробел, который вы получаете при нажатии TAB) и перенос строки. Выглядят они следующим образом:

Напишите скрипт, который: 1. Создаёт переменную $type со значением Игра . 2. Создаёт переменную $name со значением «World of Warcraft» (с кавычками). 3. Выводит обе переменные внутри тега

Выведите этот текст на экран, правильно используя кавычки и экранирование (если это необходимо):

При определении строки вам необходимо обрамить ее в одинарные или двойные кавычки. Что случится, если потребуется добавить внутри строки двойные » или одинарные ‘ кавычки?

Чтобы избежать интерпретации кавычки внутри строки как закрывающей, необходимо ее, поместив символ ( ) прямо перед кавычкой. Например:

var sampleStr = «Alan said, «Peter is learning JavaScript».»;

символ обратного слеша сообщает интерпретатору JavaScript, что кавычка не является концом строки, но должна быть частью строки. Так что, если вы попробуете отобразить эту строку, вы получите:

Alan said, «Peter is learning JavaScript».

Задание

Используйте символы , чтобы присвоить переменной myStr строку, которая содержит кавычки:

I am a «double quoted» string inside «double quotes»

Здравствуйте, уважаемые читатели блога LifeExample, сегодня я бы хотел раскрыть тему экранирования кавычек в php, javascript и sql, рассказать что это такое и зачем нужно, а также привести несколько полезных примеров показывающих необходимость экранирования.

ответ

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

давайте посмотрим, что произойдет, если вы не убежать, и пользователь вводит следующие данные:

помните, что вы просто передаете строку в MySQL, вставка выполняется обработкой строки PHP. Это означает, что в этот экземпляр, запрос, отправленный mysql_query:

что является синтаксической ошибкой и приведет к ошибке страницы. Теперь, когда пользователь, такой как я (т. е. ублюдок, намеревающийся сделать ваш день несчастьем :D), замечает один из них, мы знаем, что пришло время играть. Что произойдет, если следующие данные будут предоставлены пользователем?

наш запрос распространяется на:

это не синтаксическая ошибка, но это проблематично… теперь мы выполняем запрос, который мы никогда предназначен для! (В случае, если вы не узнаете его, » — » обозначает комментарий в SQL, т. е. «игнорировать все после этой точки»).

теперь это не может произойти в этом конкретном случае (mysql_query не поддерживает несколько запросов), но это своего рода атака, которую вы пытаетесь предотвратить — класс атак, известный как SQL-инъекций. Давайте посмотрим, что происходит, когда вы используете mysql_real_escape_string!

введенных данных становится:

что означает, что наша строка запроса выглядит так:

это замечательно! Введенные пользователем данные будут храниться в базе данных по мере их ввода. Не без кавычек и не с дополнительными косыми чертами, а по мере их ввода

это важно:. Если вы храните данные любым другим способом, вы столкнетесь с проблемами позже, с де-экранированием или двойным экранированием

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

Что такое экранирование кавычек

Чтобы дать определение этому понятию, для начала приведу небольшой пример объявления строки.

Практически в любом языке программирования мы используем следующий принцип объявления строковой переменной:

Все, что содержится между кавычек — понимается интерпретатором как строка.

Если нам нужно передать в строковую переменную текст содержащий кавычки и мы попытаемся сделать это таким образом:

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

а между ними неизвестный ему оператор – lifeexample.ru .

Чтобы такого не происходило необходимо экранировать кавычки. В javascript, например, это будет выглядеть таким образом:

После данного практического примера можно дать определение понятию экранирования кавычек.

Экранирование кавычек – это действие, совершаемое над строковой переменной в ходе работы скрипта. Действие это позволяет использовать кавычки в строке. Частным но довольно распространенным способом экранирования является подстановка обратного слеша перед внутренними кавычками.

Включение символов кавычек в строку

Чтобы в строке отображались двойные кавычки, заключите всю строку в одинарные кавычки. Пример:

Выходные данные этой команды:

Можно также заключить строку, заключенную в одинарные кавычки, в строку в двойных кавычках. Пример:

Выходные данные этой команды:

Или двойные кавычки вокруг двойных кавычек. Пример:

Выходные данные этой команды:

Чтобы включить одинарную кавычку в строку с одинарной кавычкой, используйте вторую последовательную одинарную кавычку. Пример:

Выходные данные этой команды:

Чтобы заставить PowerShell интерпретировать двойные кавычки буквально, используйте символ обратной черты. Это предотвращает интерпретацию кавычек в PowerShell как строкового разделителя. Пример:

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

Различия между числами и строковыми литералами

Разница между числами и строковыми литералами становится очевидной при сравнении следующих примеров.

Example:  

’12/31/96′

Если данная строка используется как часть выражения, в первом шаге она будет интерпретироваться как текстовая строка «12/31/96», которая в свою очередь может интерпретироваться как дата, если выбран формат даты «MM/DD/YY». В этом случае она будет храниться как двойное значение с числовым и текстовым представлениями.

Example:  

12/31/96

Когда эта строка используется как часть выражения, она будет интерпретироваться как числовое выражение, то есть как 12, деленное на 31, деленное на 96.

Также

Роб прокомментировал этот вопрос (в переписке со мной по электронной почте):

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

  • 3 Я всегда считал веб-сайт Роба Вандервоуде отличным справочником по изучению BATCH и читал многие его разделы, но почему-то никогда не читал этот раздел. Спасибо, что указали на это.
  • Объяснение Роба превосходит ss64.com.
  • А как насчет пробелов (скажем, в путях к файлам, которые используются в качестве параметров для вызова пакетного сценария (из другого пакетного сценария))?
  • 1 @PeterMortensen Тебе не обязательно побег пробелы, но вы должны заключить в кавычки строки, которые их содержат (иначе они интерпретируются как отдельные строки).
  • 1 Хотя это хорошее начало, в этом ответе (и на сайте Роба Ван дер Вуда) много неверных, вводящих в заблуждение и неполных утверждений. Для полного понимания см. Stackoverflow.com/a/4095133/1012053.

Экранирующий символ для пакета — это каретка (). Если вы хотите включить любой из символов конвейера в свой сценарий, вам необходимо поставить перед этим символом каретку:

  • 1 Да, каретка — это мой escape-символ перехода, но это не единственный escape-символ в BATCH. Иногда escape-символом является обратная косая черта, иногда — процент, а иногда — двойные двойные кавычки. Еще не запутались? Есть еще кое-что. Иногда escape-символ (символы) — это двойной процент. Время от времени это комбинация символа вставки и процента. Видите, почему я ищу вспомогательный инструмент?
  • 1 Не могли бы вы привести несколько примеров того, как вы используете что-то, кроме каретки, для экранирования символов в Windows BATCH?
  • Вот один Патрик … в этой строке я использую как ^, так и ‘%%’ Там я пишу проверку ошибок и отчет в один командный файл из другого. Символ ^ перед% errorlevel% не будет работать, вам нужен %% errorlevel %%, чтобы он правильно отображался в новом пакете.
  • @PatrickCuff, Какие еще «персонажи конвейера» есть кроме ,

Вы можете просто использовать внешний файл в качестве входных данных для sed.

Или используя строки непосредственно в пакетном режиме, рекомендуется использовать отложенное раскрытие.

РЕДАКТИРОВАТЬ: как использовать немодифицированный струны с партией

Это использует findstr для получения строки непосредственно из пакета и возврата ее в переменную результата. Таким образом, вы можете использовать sed-строку как есть.

Простое решение сохранить все аргументы командной строки — использовать : возвращает всю командную строку, начиная с первого аргумента командной строки (в Windows NT 4, также включает все начальные пробелы) и исключая любое перенаправление вывода.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: