Обновление - наконец-то все заработало. 18 июля 2019 года.
Итоговое резюме, несмотря на то, что я все равно перешел на powershell для работы с большинством консолей Windows, но я решил закрыть эту старую проблему с cmd, мне пришлось сегодня перейти на консоль cmd, и отсутствие этой функции действительно ударил меня. Этот, наконец, работает и с пробелами, где мой предыдущий ответ потерпит неудачу.
Кроме того, теперь он также может использовать ~ в качестве префикса для других домашних подпапок, а также меняет прямую и обратную косые черты. Итак, вот оно;
Шаг 1. Создайте эти doskey макросы, где бы они ни появлялись при каждом запуске cmd.
DOSKEY cd=cdtilde.bat $*
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..
Шаг 2. Создайте файл cdtilde.bat и поместите его где-нибудь в свой PATH
@echo off
set dirname=""
set dirname=%*
:: remove quotes - will re-attach later.
set dirname=%dirname:\"=%
set dirname=%dirname:/"=%
set dirname=%dirname:"=%
:: strip trailing slash.
if %dirname:~-1%==\ set dirname=%dirname:~0,-1%
if %dirname:~-1%==/ set dirname=%dirname:~0,-1%
:: if starts with ~, then replace ~ with userprofile path
if %dirname:~0,1%==~ (
set dirname=%USERPROFILE%%dirname:~1%
)
:: replace forward-slashes with back-slashes
set dirname=%dirname:/=\%
chdir /D "%dirname%"
Проверено нормально с;
cd ~ (traditional habit)
cd~ (shorthand version)
cd.. (shorthand for going up..)
cd / (eg, root of C:)
cd ~/.config (eg, the .config folder under my home folder)
cd /Program Files (eg, "C:\Program Files")
cd C:/Program Files (eg, "C:\Program Files")
cd \Program Files (eg, "C:\Program Files")
cd C:\Program Files (eg, "C:\Program Files")
cd "C:\Program Files (eg, "C:\Program Files")
cd "C:\Program Files" (eg, "C:\Program Files")
О, это также позволяет ленивые кавычки, которые я нашел полезными, даже когда в именах папок есть пробелы, так как он оборачивает все аргументы, как если бы это была одна длинная строка. Это означает, что только начальная цитата также работает, или полностью без кавычек также работает.
Все остальные вещи, приведенные ниже, теперь можно игнорировать, они оставлены по историческим причинам, поэтому я не повторяю те же ошибки снова
старое обновление 19 октября 2018.
В случае, если кто-то попробовал мой подход, мой первоначальный ответ ниже не обрабатывал пробелы, например, следующее не удалось.
> cd "c:\Program Files"
Files""]==["~"] was unexpected at this time.
Я думаю, что должен быть способ решить это. Опубликую еще раз, если я смогу улучшить свой ответ. (см. выше, я наконец все заработал так, как хотел.)
Мой оригинальный ответ, все еще нужна работа ... 7 октября 2018.
Я просто пытался сделать это сегодня, и я думаю, что понял, это то, что я думаю, работает хорошо;
Сначала несколько макросов doskey ;
DOSKEY cd=cdtilde.bat $*
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..
и затем файл bat в моем пути;
cdtilde.bat
@echo off
if ["%1"]==["~"] (
chdir /D "%USERPROFILE%"
) else (
chdir /D %*
)
Все это, кажется, работает нормально;
cd ~ (traditional habit)
cd~ (shorthand version)
cd.. (shorthand for going up..)