Яка альтернатива ~ (домашній каталог користувача) у командному рядку Windows?


215

Я намагаюся використовувати командний рядок для переміщення деяких файлів, я звик до терміналу Linux, де я ~вказую свою домашню директорію, яку я шукав скрізь, але я не можу знайти її для командного рядка Windows ( Documents and Settings\[user])

Відповіді:


324

Ви будете розчаровані: %userprofile%

Однак ви можете використовувати інші термінали. Powershell, який, на мою думку, ви можете отримати на XP і пізніше (і він попередньо встановлений з Win7), дозволяє використовувати ~для домашнього каталогу.


39

Можна %HOMEDRIVE%%HOMEPATH%для диска + \docs settings\usernameабо \users\username.


3
Ця відповідь працювала для служби, що працює як локальний обліковий запис системи. % userprofile% в цьому випадку не робить.
DonBecker

15

Для цього можна використовувати %systemdrive%%homepath%змінну середовища.

Дві змінні команди при об'єднанні дають вам потрібний шлях до домашнього каталогу користувача, як показано нижче:

  1. Запуск echo %systemdrive%у командному рядку дає:

    C:
    
  2. Запуск echo %homepath%у командному рядку дає:

    \Users\<CurrentUserName>
    

При спільному використанні він стає:

C:\Users\<CurrentUserName>

вам також знадобиться% homedrive%; дивіться відповідь Алекса К, вище
Едвард Фолк

2
@EdwardFalk Я виправив свою відповідь. Я пропустив згадати %systemdrive%змінну середовища, еквівалентну %homedrive%згаданій Алексом. Будь ласка, дайте мені свій відгук про це, якщо ви виявите щось неправильне.
RBT

8
У Windows можна перемістити всю папку користувача на інший диск (напр .: D: \ MyUser). У таких сценаріях% systemdrive %% homepath% вийде з ладу. Замість цього слід використовувати% HOMEDRIVE %% HOMEPATH%.
Даніель Сантос

Правда. Це можливо, але люди не так зазвичай змінюють ці стандартні змінні середовища. У звичайному корпоративному середовищі цими змінними середовища керується ІТ-відділ через політику групи AD, як згадується тут і тут .
RBT

6

Оновлення - краща версія 18 липня 2019 року.

Підсумковий підсумок, хоча я все-таки перейшов на powerhell для більшості консольних систем 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 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..)

У цій відповіді є спосіб запустити CMD з .bashrcфайлу -type: superuser.com/questions/144347/… . bashrc.batЯкщо поставити крок 1. з цієї відповіді у файл, вона встановить її при запуску.
Брайденр

2

Якщо ви хочете більш коротку версію Jay's, ви можете спробувати

    set usr=%userprofile%
    cd %usr%

Або ви навіть можете використовувати % u%, якщо хочете. Це все-таки економить деякі натискання клавіш.


2

Ви можете зробити майже те саме. Відкрийте змінні середовища та натисніть кнопку "Створити" у розділі "Змінні користувача для ...".
Назва змінної: ~
Значення змінної: Натисніть кнопку "Оглянути каталог ..." та виберіть потрібний каталог.

Після цього відкрийте cmd і введіть це:
cd% ~%
. Це працює.


2

Я просто спробував set ~=%userprofile% і це теж працює, якщо ви хочете продовжувати використовувати ту саму звичку

Потім можна використовувати %~%замість цього.


2
Як ви точно встановили значення ~= %userprofile%? Я запустив точну команду, згадану у вашому посту в командному рядку, але вона кидає помилку - '~' is not recognized as an internal or external command, operable program or batch file.. Чи можете ви, будь ласка, детальніше розглянути свою відповідь?
RBT

3
Якщо ви використовуєте, set ~=%userprofile%то ви можете використовувати %~%для змінної
forresthopkinsa

0

Просто написав сценарій , щоб зробити це без занадто великого набору тексту, зберігаючи при цьому мобільність , як установка ~буде %userprofile%потреби ручного налаштування на кожному ПК з Windows при клонуванні і налаштування каталогу як частина PATHє механічним.

https://github.com/yxliang01/Snippets/blob/master/windows/



-5

Ви також можете робити CD ...... \ стільки разів, скільки є папки, які переносять вас до домашнього каталогу. Наприклад, якщо ви перебуваєте у cd: \ windows \ syatem32, тоді cd .... \ переведе вас додому, тобто c: \


2
home! = c: \ Натомість Оригінальний плакат запитує про C:\Users\usernameпапку (або c:\Documents and Settings\usernameв попередніх Windows)
v.karbovnichy

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