Batch - Значение ушедшей вертикальной черты |перед знаком равенства = - PullRequest
0 голосов
/ 16 мая 2018

Я в настоящее время изо всех сил пытаюсь понять строку введения в пакетный сценарий Windows :

SET /A errno=0
SET /A ERROR_SOMECOMMAND_NOT_FOUND=2

... 
... SET /A errno^|=%ERROR_SOMECOMMAND_NOT_FOUND%

Согласно этот ответ обхват ^ являетсяescape-символ, поэтому мы заканчиваем с errno|=%ERROR_SOMECOMMAND_NOT_FOUND%.Но тогда что делает этот код?

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

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

Поэтому, пожалуйста, подскажите мне немного.

1 Ответ

0 голосов
/ 16 мая 2018

Как указано в приведенном выше параграфе, это оператор bitwise OR.Он используется для одновременной установки нескольких двоичных флагов.

В коде

SET /A ERROR_HELP_SCREEN=1
SET /A ERROR_SOMECOMMAND_NOT_FOUND=2
SET /A ERROR_OTHERCOMMAND_FAILED=4

ERROR_HELP_SCREEN равно 0b001
ERROR_SOMECOMMAND_NOT_FOUND равно 0b010
ERROR_OTHERCOMMAND_FAILED равно 0b100 *побитовое ИЛИ позволит вам вернуть что-то вроде 0b101, что будет означать, что другая команда завершилась неудачно и возникла ошибка экрана справки.

^ необходим, потому что пакетные сценарии обрабатывают | как каналы независимоконтекста, поэтому SET /A errno|=%ERROR_OTHERCOMMAND_FAILED% выдаст синтаксическую ошибку, даже если она совершенно допустима в командной строке.

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