Подтвердить что ты не робот

Какая альтернатива для ~ (пользовательский домашний каталог) в командной строке Windows?

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

4b9b3361

Ответ 1

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

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

Ответ 2

Вы можете %HOMEDRIVE%%HOMEPATH% для диска + \docs settings\username или \users\username.

Ответ 3

Для этого вы можете использовать переменную среды %systemdrive%%homepath%.

При объединении двух командных переменных вы получите желаемый путь к домашнему каталогу пользователя, как показано ниже:

  1. Запуск echo %systemdrive% в командной строке дает:

    C:
    
  2. Запуск echo %homepath% в командной строке дает:

    \Users\<CurrentUserName>
    

При совместном использовании становится:

C:\Users\<CurrentUserName>

Ответ 4

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

И после этого откройте cmd и введите это:
cd% ~%
. Он работает.

Ответ 5

Если вы хотите более короткую версию Jay, вы можете попробовать

    set usr=%userprofile%
    cd %usr%

Или вы могли бы даже использовать% u%, если хотите. В любом случае, это сохраняет некоторые нажатия клавиш.

Ответ 6

Я только что попытался set ~=%userprofile% и это тоже работает, если вы хотите продолжать использовать ту же привычку

Вы можете использовать %~% вместо этого.

Ответ 7

Обновление - лучшая версия 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..)

Ответ 8

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

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

Ответ 9

Вы также можете выполнить cd......\столько раз, сколько папок приведет вас в домашний каталог. Например, если вы находитесь в cd:\windows\syatem32, то cd....\приведет вас к дому, то есть c:\