Який еквівалент "~" (tilde) Linux у Windows?


72

В Linux ми можемо зайти додому користувача, ввівши ~символ tilde ( ) після cd:

cd ~

Як зробити те саме в Windows?

Щоразу мені потрібно вводити:

cd C:\Document and Settings\freewind

Це занадто нудно.


2
Розглянути можливість використання cygwin?
Пол Р

8
насправді '~' за замовчуванням для 'cd' під більшою частиною оболонок Linux, тож просто 'CD' буде достатньо, щоб перейти до вашого homedir


4
Відповідь просто "cd ~" .. означає, що ви можете використовувати ту саму команду і в Windows. Але не слід пробувати цю команду в CMD, оскільки Microsoft застаріла і її розвиток припинено. Використовуйте "Windows PowerShell" і та сама команда буде працювати безперебійно.
Apple II

3
PowerShell поставляється з Win7 +
Isaac Dontje Lindell

Відповіді:


43

cd /d "%HOMEDRIVE%%HOMEPATH%" зробив би це, але я не впевнений, чи вважаєте ви це вдосконаленням.

Ви також можете визначити псевдонім для вищевказаної команди:

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

Після цього це просто cdhome.


4
@Freewind: Ви повинні любити стандартну оболонку Windows.
Джон

10
@abatishchev: Добре питання. Це питання щодо SF, схоже, вказує на те, що% USERPROFILE% є кращим.
Jon

3
Ви також можете використовувати cd ~ як ім'я макросу, замість цього, якщо cdhome.
jftuga

3
@abatishchev: У акаунтах Windows NT може бути доданий шлях "домашнього каталогу", який є окремим від "каталогу профілю". Профіль зберігає ваші налаштування (Реєстр), дані програми тощо. Домашня директорія, з іншого боку, призначена для власних файлів - коли програма вперше відобразить діалогове вікно "Відкрити / зберегти", воно запуститься в домашній каталог. (Windows 95/98 використовував це дещо інакше; не можу запам'ятати специфіку.) Це корисно в середовищі Active Directory для зберігання файлів у мережевій папці, але зберігання профілю локальним.
grawity

2
@jftuga: Або навіть ~.
grawity

62

Ви можете використовувати, cd /d %USERPROFILE%якщо ви використовуєте cmd.

або ви можете використовувати, cd ~якщо ви використовуєте PowerShell.


4
+1, але також додайте лапки навколо змінної (можливо, це буде c:\documents and settings\..., пробіли будуть порушені, якщо не буде цитовано)
Jon

7
@Jon: cdє винятком. Оскільки він завжди бере єдиний аргумент, цитувати не потрібно. (У Windows програми та вбудовані модулі повинні самі розбирати свій командний рядок, оболонка не робить цього.) Завжди цитування шляхів - це хороша практика.
grawity

1
@barlop: зазвичай CommandLineToArgvW () ; Часи виконання CLR / MinGW / Cygwin також автоматично використовують власний еквівалент перед викликом main (). Деякі програми, однак, мають парсери, написані повністю з нуля, наприклад, cmd.exeсам та його дурний /c.
grawity

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\bazC:\foo
виконано

1
@TheLQ Пакетний сценарій ще простіший. Я можу досягти того ж результату, набравши одного символу. Дивіться мою відповідь нижче для опису.
weberc2

13

Однією з можливостей є використання substкоманди з командного рядка:

subst z: C:\Document and Settings\freewind

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

Мінус полягає в тому, що вам потрібно запускати його щоразу, коли ви входите в систему. Я використовував пакетний файл і просто поміщав його в свою папку запуску, але, мабуть, є більш елегантні рішення для цього.

Перевага полягає в тому, що на відміну від псевдоніма doskey він працює універсально (провідник Windows, діалогове вікно перегляду тощо), а не лише при зміні каталогів у командному рядку. Це особливо корисно для старих програм зі старими діалогами перегляду, які мають букви диска на найвищому рівні, а не "робочий стіл".


Ви можете зіставити диск і зробити його автоматично перезавантаженим після входу. Не потрібно використовувати subst
phuclv

1
@ LưuVĩnhPhúc Це може бути не цілком логічно, але я схиляюсь уникати того, щоб мережа Windows поділяла речі, якщо мені справді не доведеться їх використовувати. Я відчуваю, що продуктивність і надійність ... непередбачувані? У будь-якому випадку, якщо у вас є альтернативний, найкращий спосіб зробити це, будь ласка, опублікуйте його у власній відповіді на благо кожного :)
мо.

6

Ви можете зробити це:

cd %homepath%

5
Це вийде, якщо ви перебуваєте на іншому приводі - наприклад, увімкнено, E:а ваш C:
хомедір

4

Ви можете створити пакетний файл, який називається ~.batмістить

@echo off
cd /d %USERPROFILE%

І додайте його до змінної PATH (Пуск -> [клацніть правою кнопкою миші на "Комп'ютер"] -> Властивості -> "Розширені налаштування системи" [у лівому стовпці] -> "Змінні середовища"

Звідти просто відредагуйте змінну PATH, щоб включити папку, що містить ваш ~.batфайл. (Це дозволяє викликати свій скрипт з будь-якого місця, використовуючи лише ім’я файлу - не абсолютний шлях до файлу)

Також переконайтеся, що PATHEXTзмінна середовища містить .BATдесь (це дозволяє вводити ~замість ~.bat).

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


2

На жаль, я не знаю про ідеальне рішення, але є кілька варіантів:

Варіант 1: Встановити ~ як псевдонім команди з doskey

doskey ~=cd /d %USERPROFILE%

Це дасть вам змогу просто набрати ~та додати chdir до вашого homedir.

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

Очевидно, це скорочує кількість натискань на клавіші, щоб повернутися додому (навіть порівняно з Linux), але є менш надійним, оскільки ви не можете реально використовувати його як частину іншого шляху або зробити багато з ним, крім простого домашнього cd'ing.

Варіант 2: Встановити ~ бути змінною

Ще один варіант, якщо ви хочете більш надійний варіант - встановити var:

set ~="%USERPROFILE%"

але це використовуватиметься так:

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

Його також можна вводити в більшість шляхів і не обмежує вас просто вдома.

Обидва варіанти одночасно

Також ви можете реалізувати обидва способи одночасно. Якщо у вас навколо нього%, то він буде використовувати змінну - інакше вона буде розглядатися ~як команда.

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%директор був простим ім'ям. Як ви бачите з моїх прикладів вище, мій користувальницький C:\Users\aрейтинг - я завжди мав "aplocher" або "adamp", і коли я перейшов на одну букву, це було магічно.


1

У Powershell %variable%синтаксис не працює. Ви можете зробити це:

cd $env:USERPROFILE

2
Ви можете використовувати cd ~в PowerShell.
wjandrea

0

Використовуючи PowerShell, ви можете спробувати наступний метод для навігації в каталогах з будь-якого місця, якщо ви знаєте своє ім’я користувача та надано дозволи файлових файлів.

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

Дивіться приклад нижче в PowerShell (64bit). Я перевірив це на 64-бітній коробці Windows 7 Pro.

Linux Lilde еквівалент у Windows 7 Pro 64 Bit

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.