Что эквивалентно Linux «~» (тильда) в Windows?

72

В Linux мы можем перейти к пользователю домой, введя ~символ tilde ( ) после cd:

cd ~

Как сделать то же самое в Windows?

Каждый раз мне нужно набрать:

cd C:\Document and Settings\freewind

Это слишком скучно.

Freewind
источник
2
Рассмотреть возможность использования Cygwin?
Пол Р
8
на самом деле, '~' является значением по умолчанию для 'cd' в большинстве оболочек Linux, поэтому достаточно просто 'cd', чтобы перейти к вашему домашнему каталогу
@Arnout: См stackoverflow.com/questions/998626/...
abatishchev
4
Ответ прост: «cd ~» .. означает, что вы можете использовать ту же команду и в Windows. Но вы не должны пытаться использовать эту команду в CMD, потому что она устарела и ее разработка прекращена Microsoft. Используйте «Windows PowerShell», и та же команда будет работать гладко.
Apple II
3
PowerShell поставляется с Win7 +
Исаак Донтже Линделл

Ответы:

43

cd /d "%HOMEDRIVE%%HOMEPATH%" сделал бы это - но я не уверен, если вы считаете это улучшением.

Вы также можете определить псевдоним для вышеуказанной команды:

doskey cdhome=cd /d "%HOMEDRIVE%%HOMEPATH%"

После этого все просто cdhome.

Джон
источник
4
@Freewind: Вы должны любить оболочку Windows по умолчанию.
Джон
10
@abatishchev: Хороший вопрос. Этот вопрос о SF, кажется, указывает на то, что% USERPROFILE% является предпочтительным.
Джон
3
Вы также можете использовать cd ~ в качестве имени макроса вместо cdhome.
jftuga
3
@abatishchev: к учетным записям Windows NT может быть присоединен путь к «домашнему каталогу», отличный от «каталога профиля». В профиле хранятся ваши настройки (реестр), данные приложения и тому подобное. Домашний каталог, с другой стороны, предназначен для ваших собственных файлов - когда программа впервые отображает диалоговое окно «Открыть / Сохранить», она запускается из домашнего каталога. (Windows 95/98 использовала его несколько иначе; не могу вспомнить подробности.) Это полезно в средах Active Directory, для хранения файлов на общем сетевом ресурсе, но для сохранения профиля локальным.
grawity
2
@jftuga: Или даже ~.
grawity
63

Вы можете использовать, cd /d %USERPROFILE%если вы используете cmd.

или вы можете использовать, cd ~если вы используете PowerShell.

Nocturn
источник
4
+1, но также добавьте кавычки вокруг переменной (может быть c:\documents and settings\..., пробелы будут разбивать ее, если она не заключена в кавычки)
Jon
7
@Jon: cdэто исключение. Поскольку он всегда принимает один аргумент, цитирование не обязательно. (В Windows, программы и встроенные модули должны анализировать их Командная строка себя, оболочка не делает.) Всегда цитирую пути является хорошей практикой, однако.
Гравитация
1
@barlop: обычно CommandLineToArgvW () ; среды выполнения CLR / MinGW / Cygwin также автоматически используют собственный эквивалент перед вызовом main (). Некоторые программы, однако, имеют парсеры, написанные полностью с нуля, например, cmd.exeсам по себе и его причудливый /c.
Гравитация
1
@barlop: Нет, если вы пытаетесь использовать кавычки (или перенаправление) как часть данной команды. Это /c "C:\foo bar\baz" "my file.txt"или /c "\"C:\foo bar\baz\" \"my file.txt\""или /c ""C:\foo bar\baz" "my file.txt""? Еще хуже то, что синтаксический анализ зависит от того, /sбыл ли указан ранее, наличия специальных символов, от того, назван ли исполняемый файл C:\foo bar\bazили просто C:\foo...
grawity
1
@TheLQ Пакетный скрипт еще проще. Я могу добиться того же результата, набрав один символ. Смотрите мой ответ ниже для описания.
weberc2
13

Одна возможность - использовать substкоманду из командной строки:

subst z: C:\Document and Settings\freewind

Каждый раз, когда вы переходите на диск Z:, вы будете просматривать свою папку пользователя.

Недостатком является то, что вам нужно запускать его каждый раз, когда вы входите в систему. Я использовал командный файл и просто поместил его в папку автозагрузки, но, возможно, есть более элегантные решения для этого.

Преимущество состоит в том, что в отличие от псевдонима doskey, он работает универсально (проводник Windows, диалог просмотра и т. Д.), А не только при смене каталогов в командной строке. Это особенно полезно для старых программ со старыми диалоговыми окнами просмотра, которые имеют буквы дисков на самом верхнем уровне, а не «рабочий стол».

денежный перевод по почте
источник
Вы можете сопоставить диск и сделать его автоматически переназначить после входа в систему. Нет необходимости использовать subst
phuclv
1
@ LưuVĩnhPhúc Может быть, это не совсем логично, но я стараюсь избегать общих ресурсов Windows Network, если мне действительно не нужно их использовать. Я чувствую, что производительность и надежность ... непредсказуемы? Во что бы то ни стало, если у вас есть альтернатива, даже лучше, способ сделать это, пожалуйста, опубликуйте ее в своем собственном ответе на благо всех :)
мес.
6

Ты можешь сделать это:

cd %homepath%
Бали С
источник
5
Это сломается, если вы находитесь на другом диске - например, вы E:включены, и ваш домашний каталог включенC:
Piskvor
4

Вы можете создать командный файл, ~.batсодержащий

@echo off
cd /d %USERPROFILE%

И добавьте его в переменную PATH (Пуск -> [щелкните правой кнопкой мыши «Компьютер»] -> Свойства -> «Расширенные настройки системы» [в левом столбце] -> «Переменные среды»)

Оттуда просто отредактируйте переменную PATH, включив в нее папку, содержащую ваш ~.batфайл. (Это позволяет вам вызывать ваш скрипт из любого места, используя только имя файла, а не абсолютный путь к файлу)

Кроме того, убедитесь, что ваша PATHEXTпеременная окружения .BATгде-то содержится (это позволяет вам печатать ~вместо ~.bat).

Когда вам нужно его использовать, просто введите ~в командной строке. Это решение является постоянным - вам не придется настраивать его каждый раз, когда вы запускаете оболочку, и вам не нужно будет взламывать реестр.

weberc2
источник
2

К сожалению, я не знаю идеального решения, но есть несколько хакерских вариантов:

Вариант 1: установите ~ как псевдоним команды с doskey

doskey ~=cd /d %USERPROFILE%

Это позволит вам просто набрать ~chdir и отправить его в homedir.

C:\>~
C:\Users\a>

Очевидно, это сокращает количество нажатий клавиш, чтобы вернуться домой (даже по сравнению с Linux), но менее надежно, поскольку вы не можете использовать его как часть другого пути или делать с ним что-то большее, чем просто cd'ing home.

Вариант 2: установите ~ как переменную

Другой вариант, если вы хотите более надежный вариант, это установить переменную:

set ~="%USERPROFILE%"

но используя это будет использоваться как:

E:\>cd /d %~%
C:\Users\a>

Он также может быть введен в большинство путей и не ограничивает вас просто cd'ing home.

Оба варианта одновременно

Также вы можете реализовать оба метода одновременно. Если у вас есть%, то он будет использовать переменную - иначе он будет рассматриваться ~как команда.

C:\>:: ECHO (display) THE VALUE OF %~%
C:\>echo %~%
C:\Users\a

C:\>:: ChDir to ~\DESKTOP
C:\>cd /d %~%\Desktop

C:\Users\a\Desktop>:: USE THE ~ COMMAND
C:\Users\a\Desktop>~

C:\Users\a>

Еще один совет (вроде как):

С меньшей вероятностью это будет приемлемо на корпоративной машине, по крайней мере на вашем домашнем ПК, для сохранения дополнительных нажатий клавиш; неплохо было бы сделать ваше %USERPROFILE%имя простым именем. Как вы можете видеть из моих примеров выше, мой пользователь dir C:\Users\a- у меня всегда было «aplocher» или «adamp», и когда я менял одну букву, это было волшебно.

Адам Плохер
источник
1

В Powershell %variable%синтаксис не работает. Ты можешь сделать это :

cd $env:USERPROFILE
Elzo
источник
2
Вы можете использовать cd ~в PowerShell.
17
0

Используя PowerShell, вы можете использовать следующий метод для перемещения по каталогам из любой точки мира, если вы знаете свое имя пользователя и имеете права доступа к каталогу файлов.

cd \..\Users\yourUserName\Documents
cd \..\Users\yourUserName\Downloads
cd \..\Users\yourUserName\Desktop
cd \..\Users\yourUserName\music

Смотрите пример ниже в PowerShell (64 бит). Я проверял это на Windows 7 Pro 64-битной коробке.

Linux Lilde эквивалент на Windows 7 Pro 64 бит

Полный массив
источник