Cmder: Создание псевдонима со знаком равенства обрезается в cmder cli

Созданный на 2 февр. 2017  ·  3Комментарии  ·  Источник: cmderdev/cmder

Привет, согласно заголовку, когда я пытаюсь в командной строке создать псевдоним со знаком равенства, то, что идет с = усекается и неправильно сохраняется в файле user-aliases.cmd .

Например:
λ alias wifi=netsh wlan show profile $1 key=clear
будет храниться как:
wifi=netsh wlan show profile $1 ke

Я предполагаю, что для $reasons cmder читает y=clear как $something достойный оценки, и поэтому он отрезан от фактического процесса хранения псевдонимов. Редактирование файла вручную позволяет быстро решить эту проблему.

Я явно упускаю что-то в постоянно растущем Руководстве Эффина, которое я не прочитал точно? 😛

Самый полезный комментарий

Похоже, что команда doskey (которая является оболочкой из псевдонима) обрабатывает ваш пример, так что это может быть ошибкой в ​​скрипте alias.bat.

Вы можете отлаживать, изменив alias.bat и изменив первую строку на <strong i="6">@echo</strong> on . Глядя на это сейчас, я вижу, что есть момент, когда сценарий разбивает строку псевдонима, используя "=" в качестве разделителя, и предполагает, что в строке будет только один =.

Вот исправление: в alias.bat найдите строку, в которой написано ":: validate alias", и в следующей строке замените '2' на '*', например:

for / f "delims == tokens = 1, * usebackq" %% G in ( echo "%_x%" ) do (

Кажется, это работает для меня с вашим примером.

Все 3 Комментарий

Похоже, что команда doskey (которая является оболочкой из псевдонима) обрабатывает ваш пример, так что это может быть ошибкой в ​​скрипте alias.bat.

Вы можете отлаживать, изменив alias.bat и изменив первую строку на <strong i="6">@echo</strong> on . Глядя на это сейчас, я вижу, что есть момент, когда сценарий разбивает строку псевдонима, используя "=" в качестве разделителя, и предполагает, что в строке будет только один =.

Вот исправление: в alias.bat найдите строку, в которой написано ":: validate alias", и в следующей строке замените '2' на '*', например:

for / f "delims == tokens = 1, * usebackq" %% G in ( echo "%_x%" ) do (

Кажется, это работает для меня с вашим примером.

Спасибо, что подробно объяснили проблему, очень полезно для меня, так как я новичок в CMD! :)
Я могу подтвердить, что ваше исправление устранило проблему, спасибо! Стоит ли делать пиар?

Я могу создать запрос на перенос с исправлением. Спасибо, что подтвердили, что это работает для вас.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

bmeverett picture bmeverett  ·  3Комментарии

AaronKaa picture AaronKaa  ·  3Комментарии

Joe1992w picture Joe1992w  ·  3Комментарии

jenisys picture jenisys  ·  3Комментарии

sathishsoundharajan picture sathishsoundharajan  ·  3Комментарии