Амперсанд в Windows Password


2

У меня есть пароль для учетной записи Perforce, который содержит амперсанд (&), и когда я пытаюсь использовать определенные команды P4, я получаю следующую ошибку:

Perforce password (P4PASSWD) invalid or unset.

У меня такое ощущение, что это как-то связано с амперсандом, из-за чего пароль не распознается в командной оболочке Windows, однако я больше знаком с bash, чем с Windows, поэтому не уверен, как с этим справиться. Есть ли эксперты по Windows, которые видели что-то подобное? Я хотел бы избежать необходимости менять пароль, если это возможно, но каким-то образом установить переменную среды P4PASSWD так, чтобы она распознавалась оболочкой как правильный пароль.


Почему вы против смены пароля? Зачем идти против течения на что-то подобное?
Ramhound

Пароль в среде var? Я надеюсь, вы понимаете, что храните его в виде простого текста, и ЛЮБОЕ приложение может его прочитать. Это даже доходит до раскрытия любых веб-сайтов, которые вы посещаете с этого компьютера.
Тонни

Разве P4PASSWD - это не среда? Зачем еще жаловаться, когда я запускаю что-то вроде этого: p4 changes -s submitted -m1 Perforce password (P4PASSWD) invalid or unset.
user3270760

@ Тонни: Как именно веб-сайты получают доступ к переменным вашей среды?
благодарность

@ Тонни: Я не понимаю, как последний метод мог бы работать. Windows никоим образом волшебным образом не переписывает URL-адреса HTTP-запросов в браузерах, если сам браузер явно не вызывает какую-либо функцию расширения переменной. И если это так, то это сломало бы каждый адрес, содержащий серию специальных символов в кодировке URL (% 20 и т. Д.).
благодарность

Ответы:


4

Ты прав. Амперсанд - это специальный символ в командной строке Windows. Обычно, чтобы избежать этого, вы используете каретку (^) или двойные кавычки. Если ни один из этих способов не работает (или если вы на самом деле не вводите свой пароль в командной строке), я бы предложил просто изменить ваш пароль.

Например:

C:\Windows\System32>echo a&b
a
'b' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\System32>echo a^&b
a&b

C:\Windows\System32>

2
^Является каретка . Это является морковь . Извините, не удержался.
Боб

@ Боб Хе-хе. Спасибо, это исправлено.
TTT

0

Синтаксис ссылки : Escape-символы, разделители и кавычки

^ Побег персонажа.

Добавление escape-символа перед символом команды позволяет рассматривать его как обычный текст. При передаче или перенаправлении любого из этих символов вы должны использовать префикс с escape-символом: & \ <> ^ |

^\ ^& ^| ^> ^< ^^

Так что в командной оболочке Windows вам нужно использовать ^&вместо &экранирования особое значение&

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.