Ответы:
Можно %HOMEDRIVE%%HOMEPATH%
на драйве + \docs settings\username
или \users\username
.
Вы можете использовать %systemdrive%%homepath%
переменную окружения для достижения этой цели.
При объединении двух переменных команды вы получите путь к домашнему каталогу нужного пользователя, как показано ниже:
Запуск echo %systemdrive%
в командной строке дает:
C:
Запуск echo %homepath%
в командной строке дает:
\Users\<CurrentUserName>
Когда используется вместе это становится:
C:\Users\<CurrentUserName>
%systemdrive%
переменную среды, которая эквивалентна %homedrive%
упомянутой Алексом. Пожалуйста, дайте мне свой отзыв об этом, если вы обнаружите что-то неправильное.
Обновление - лучшая версия 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=%*
set orig_dirname=%*
:: remove quotes - will re-attach later.
set dirname=%dirname:\"=%
set dirname=%dirname:/"=%
set dirname=%dirname:"=%
:: restore dirnames that contained only "/"
if "%dirname%"=="" set dirname=%orig_dirname:"=%
:: strip trailing slash, if longer than 3
if defined dirname if NOT "%dirname:~3%"=="" (
if "%dirname:~-1%"=="\" set dirname="%dirname:~0,-1%"
if "%dirname:~-1%"=="/" set dirname="%dirname:~0,-1%"
)
set dirname=%dirname:"=%
:: if starts with ~, then replace ~ with userprofile path
if %dirname:~0,1%==~ (
set dirname="%USERPROFILE%%dirname:~1%"
)
set dirname=%dirname:"=%
:: replace forward-slashes with back-slashes
set dirname="%dirname:/=\%"
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 ..
и затем файл с битой на моем пути;
cdtilde.bat
@echo off
if ["%1"]==["~"] (
chdir /D "%USERPROFILE%"
) else (
chdir /D %*
)
Все это, кажется, работает нормально;
cd ~ (traditional habit)
cd~ (shorthand version)
cd.. (shorthand for going up..)
.bashrc
файлом -типа: superuser.com/questions/144347/… . Помещение шага 1. из этого ответа в bashrc.bat
файл установит его при запуске.
Вы можете сделать почти то же самое самостоятельно. Откройте переменные среды и нажмите кнопку «Создать» в разделе «Пользовательские переменные для ...».
Имя переменной: ~
Значение переменной: нажмите кнопку «Обзор каталога ...» и выберите нужный каталог.
И после этого откройте cmd и введите:
cd% ~%
. Оно работает.
Я только что попробовал, set ~=%userprofile%
и это тоже работает, если вы хотите продолжать использовать ту же привычку
Вы можете использовать %~%
вместо этого.
~
= %userprofile%
? Я выполнил точную команду, упомянутую в вашем посте, в командной строке, но она выдает ошибку - '~' is not recognized as an internal or external command, operable program or batch file.
. Можете ли вы более подробно изложить свой ответ?
set ~=%userprofile%
то вы можете использовать %~%
для переменной
Просто написал сценарий , чтобы сделать это без слишком большого набора текста, сохраняя при этом мобильность , как установка ~
будет %userprofile%
потребности ручной настройки на каждом ПК с Windows при клонировании и настройки каталога как часть PATH
является механическим.
Просто
Сначала определите путь
doskey ~=cd %homepath%
Затем доступ
~
Вы также можете выполнить cd ...... \ столько раз, сколько папок приведет вас в домашний каталог. Например, если вы находитесь в cd: \ windows \ syatem32, то cd .... \ приведет вас к дому, то есть c: \
C:\Users\username
папке (или c:\Documents and Settings\username
в более ранней Windows)
C:\
, рекомендуется cd \
вместо неопределенного числа использоватьcd ..\..\..