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

1280
user3270760

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

Perforce password (P4PASSWD) invalid or unset. 

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

1
Почему вы против изменения пароля? Зачем идти против течения на что-то подобное? Ramhound 9 лет назад 0
Пароль в среде var? Я надеюсь, вы понимаете, что храните его в виде простого текста, и ЛЮБОЕ приложение может его прочитать. Это даже доходит до раскрытия любых веб-сайтов, которые вы посещаете с этого компьютера. Tonny 9 лет назад 0
Разве P4PASSWD - это не среда? Зачем еще жаловаться, когда я запускаю что-то вроде этого: `p4 changes -s submit -m1`` Неверный или неустановленный пароль выполнения (P4PASSWD). user3270760 9 лет назад 0
@ Тонни: Как _оточно_ веб-сайты получают доступ к переменным вашей среды? grawity 9 лет назад 0
@ Тонни: Я не понимаю, как последний метод мог бы работать. Windows никоим образом не волшебным образом переписывает URL-адреса HTTP-запросов в браузерах, если сам браузер явно не вызывает какую-либо функцию расширения переменных. И если это так, то это сломало бы каждый адрес, содержащий серию специальных символов в кодировке URL (% 20 и т. Д.). grawity 9 лет назад 0
@ Grawity ActiveX является одним из методов. (Очевидно, специфичен для IE.) Другой работает через специально созданные URL-адреса перенаправления, такие как «http://bad.website.com/redirect.asp&expose_%ENVVAR%.htm». Браузеры расширяют ENVVAR перед отправкой нового URL-адреса на сервер. Затем сервер может получить контент. Некоторые старые версии IE использовали для этого. Я только что проверил, что Firefox V31 и Internet Explorer 11 не подвержены этому. Tonny 9 лет назад 0
@grawity Только что сделал еще один тест: IE11 расширит% VAR%, но переменная должна существовать. Если это не так (например,% 20% 20), он оставит это в покое. Tonny 9 лет назад 0

2 ответа на вопрос

4
TTT

Ты прав. Амперсанд - это специальный символ в командной строке 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> 
`^` Это * карета *. [Это] (http://i.stack.imgur.com/LlQIg.jpg) является * морковь *. Извините, не удержался. Bob 9 лет назад 1
@ Боб Хе-хе. Спасибо, это исправлено. TTT 9 лет назад 0
0
DavidPostill

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

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

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

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

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