Я пытаюсь использовать командную строку для перемещения некоторых файлов, я привык к терминалу Linux, где я использую ~
, чтобы указать мой домашний каталог, который я искал везде, но я не мог найти его для командной строки Windows ( Documents and Settings\[user]
)
Какая альтернатива ~ (домашний каталог пользователя) в командной строке Windows?
Ответы (11)
Вы будете разочарованы: %userprofile%
Однако вы можете использовать другие терминалы. Powershell, который, как мне кажется, можно использовать в XP и более поздних версиях (и поставляется с предустановленной Win7), позволяет использовать ~
в качестве домашнего каталога.
Вы можете %HOMEDRIVE%%HOMEPATH%
для диска + \docs settings\username
или \users\username
.
Для этого можно использовать переменную среды %homedrive%%homepath%
.
Две командные переменные при объединении дают вам путь к домашнему каталогу желаемого пользователя, как показано ниже:
Запуск
echo %homedrive%
в командной строке дает:C:
Запуск
echo %homepath%
в командной строке дает:\Users\<CurrentUserName>
При совместном использовании становится:
C:\Users\<CurrentUserName>
%systemdrive%
, которая эквивалентна %homedrive%
, упомянутой Алексом. Пожалуйста, дайте мне свой отзыв, если вы обнаружите что-то неправильное.
- person RBT; 23.07.2017
%HOMEDRIVE%%HOMEPATH%
. Поэтому %HOMEDRIVE%%HOMEPATH%
- правильный ответ во всех случаях, и я рекомендую изменить свой ответ соответствующим образом.
- person Ken Williams; 02.12.2020
Обновление - лучшая версия 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 ..
а затем файл bat на моем пути;
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
установит его при запуске.
- person Brydenr; 18.12.2019
Я только что попробовал set ~=%userprofile%
, и это тоже работает, если вы хотите сохранить ту же привычку
Вместо этого вы можете использовать %~%
.
~
= %userprofile%
? Я выполнил точную команду, упомянутую в вашем сообщении, в командной строке, но выдает ошибку - '~' is not recognized as an internal or external command, operable program or batch file.
. Не могли бы вы подробнее рассказать о своем ответе?
- person RBT; 23.07.2017
set ~=%userprofile%
, вы можете использовать %~%
для переменной
- person forresthopkinsa; 19.09.2017
${env:~}="$env:homedrive$env:homepath"
.
- person Ken Williams; 02.12.2020
Если вам нужна более короткая версия Джея, вы можете попробовать
set usr=%userprofile%
cd %usr%
Или вы даже можете использовать % u%, если хотите. В любом случае это экономит некоторые нажатия клавиш.
Вы можете сделать почти то же самое и сами. Откройте переменные среды и нажмите кнопку «Создать» в «Пользовательские переменные для ...».
Имя переменной: ~
Значение переменной: Нажмите кнопку «Обзор каталога ...» и выберите нужный каталог.
После этого откройте cmd и введите следующее:
cd% ~%
. Оно работает.
Просто
Первое определение пути
doskey ~=cd %homepath%
Тогда доступ
~
Просто написал сценарий, чтобы сделать это без лишнего набора текста, сохраняя при этом переносимость, так как для настройки ~
на %userprofile%
требуется ручная настройка на каждом ПК с Windows, в то время как клонирование и настройка каталога как части PATH
является механической.
https://github.com/yxliang01/Snippets/blob/master/windows/ < / а>
Используйте 1_. %systemdrive%
указывает символ диска (в основном C:
), а %homepath%
указывает домашний каталог пользователя (\Users\<USERNAME>
).
Вы также можете сделать cd ...... \ столько раз, сколько папок приведет вас в домашний каталог. Например, если вы находитесь в cd: \ windows \ syatem32, то cd .... \ перенесет вас в дом, то есть c: \
C:\Users\username
(или c:\Documents and Settings\username
в более ранних версиях Windows)
- person v.karbovnichy; 17.01.2019
C:\
, рекомендуется использовать cd \
вместо неопределенного числа cd ..\..\..
- person lcnittl; 29.05.2020