версия =% версия: =% - есть ли веская причина для использования этого? - PullRequest
0 голосов
/ 09 января 2019

Я имею дело с кодом, который был составлен кем-то, кто давно ушел из компании. Читается:

REM         XX.XXX      YYYYMMDD Author Description 
REM version=4.3   &:20170418 comment comment comment 
REM version=4.4   &:20170519 comment comment comment
SET version=4.5c  &:20170604 comment comment comment
SET "version=%version: =%"

Обдумав это, мы наконец выяснили две вещи: во-первых, что & вещь работает, чтобы сообщить DOS, что новая команда идет в той же строке, а затем: date просто выбрасывается, потому что DOS не знаю, что с этим делать.

Но затем мы получаем эту ерунду SET "version =% version: =%".

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

SET version=4.5 c
SET "version=%version: =%"
ECHO %version%

Я выведу на экран "4.5c".

Я не могу найти информацию об этом бизнесе ": =%" в Интернете. Есть ли веская причина для этого?

1 Ответ

0 голосов
/ 09 января 2019

Что происходит?:

Это выглядит как Переменная Edit / Replace или другими словами синтаксическая замена . Это позволяет вам взять строку и заменить ее символами или словами и либо заменить существующую строку, либо создать новую измененную.

Пример SET "version=%version: =%" Это будет изменение строки version и удаление всех пробелов из строки.

Положительные значения для этого метода:

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

Синтаксическая замена обычно используется для проблем, которые не могут быть решены внутри цикла for или строк, которые необходимо настроить перед использованием, например, будут пути к папкам. В циклах for при обработке строк, содержащих \ и попытке использовать delims=\, иногда требуется изменить его на менее конфликтующий символ, например ; - SET "String=%String:\=;". Использование бесконечно.

Минусы к этому методу:

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

  • SET "version=Hello & There" - Это нарушит синтаксический код замены как & вызывает новую команду.
  • SET "version=Hello ^& There" - это правильный способ "игнорировать" символ & для обработки.

Проверьте Set /? в окне CMD для получения дополнительной информации.

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