Как стать автором
Обновить

Комментарии 14

Второй батник для подгрузки алиасов писать не обязательно.
Можно просто прописать ключ

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\cd]
@=«c:\\mytools\\cd.bat»

И что примечательно, даже в PATH класть файл не обязательно. Будет работать сразу.
Фича работает начиная с win2007
Есть также ветки и для отдельных пользователей, чтобы создавать личные, а не глобальные профайлы.

Не то что бы я очень не люблю cmd, но что вам мешает использовать powershell вместо cmd? Тем более что с 5 версии он стал вообще лапочкой и теперь еще и синтаксис команд подсвечивает. Что такого можно делать в cmd что было бы менее удобно, чем в powershell?
За исключением подобных описанным в статье мелочей, меня вполне устраивает cmd.exe а возможности PowerShell для моих задач избыточны и… в PowerShell не работает Far Manager. Возможно есть и другие причины, но я их сейчас не помню.
нежелания разбираться с «особенностями» cmd.exe привело меня к установке cygwin. получаем замечательно работающий шел (любой на выбор) и богатейшие возможности настройки. фар конечно не запустишь там, это конечно минус.
mc
mc и far сравнивать нельзя, слишком разные весовые категории.
Во-первых, if "%*" == "" приведет к ошибке в случае кавычек в аргументе
U:\tmp>cd /d "z:\tmp"
The syntax of the command is incorrect.

Надо if "%~1" == "". Хотя это тоже не спасение.

Во-вторых, cd.bat — лишняя сущность. Достаточно
doskey cd=if "$*" == "" ( cd ) else ( cd /d $* )
И можно расширить:
doskey cd=if "$*" == "" ( cd ) else if "$1" == "~" ( cd /d ^"^%USERPROFILE^%^" ) else ( cd /d $* )
Вместо таких ухищрений, можно использовать PUSHD и POPD для навигации по папкам (доступно начиная с Win XP).
Идеальное решение. Прописать алиас в реестре cd на pushd и все, теперь всегда и все работает со всеми каталогами.
У этого решения есть одна особенность — при переходе в сетевой каталог по UNC-пути, происходит автоматическое подключение сетевой папки как диска с назначением свободной буквы диска. Причём это происходит при КАЖДОМ переходе в любую сетевую папку. Автоотключения диска не происходит, т.е. очень быстро у Вас закончатся свободные буквы для дисков и вы не сможете подключить к примеру Flash-карту… а в Моём компьютере будете наблюдать кучу сетевых дисков. Как минимум, в Windows 2008 R2 это решение приводит к такому результату. На других версиях не проверял.
И после всего описанного здесь, у кого-то повернётся язык назвать линуксоида красноглазиком?! :-)

Вообще, было интересно почитать, но использовать я всё же не стану. Добавить "/d" не большая проблема. По-моему, даже меньшая, чем выполнять всё описанное на всех обслуживаемых серверах. Кроме того, подобное решение отучает от стандартного поведения стандартных команд и может доставить неудобство при работе на неподготовленных хостах. Впрочем, это всего лишь моё мнение.
Хм, а разве дефолтное поведение команды не может быть задано через параметры SET(переменные окружения) как это делается с командой DIR? на счет CD не знаю, но для DIR такие настройки тянутся еще с MS-DOS 6.20 по меньшей мере.
Очень жаль что такое не сделали.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации