Respostas:
Você pode %HOMEDRIVE%%HOMEPATH%
para a unidade + \docs settings\username
ou \users\username
.
Você pode usar %systemdrive%%homepath%
a variável de ambiente para fazer isso.
As duas variáveis de comando, quando concatenadas, fornecem o caminho do diretório inicial do usuário desejado, conforme abaixo:
A execução echo %systemdrive%
no prompt de comando fornece:
C:
A execução echo %homepath%
no prompt de comando fornece:
\Users\<CurrentUserName>
Quando usados juntos, eles se tornam:
C:\Users\<CurrentUserName>
%systemdrive%
a variável de ambiente que é equivalente à %homedrive%
mencionada por Alex. Envie-me seus comentários sobre isso se encontrar algo incorreto.
Atualização - versão melhorada 18 de julho de 2019.
Resumo final, mesmo que eu tenha mudado para o PowerShell para a maioria dos trabalhos de console do Windows, mas decidi encerrar esse antigo problema de cmd, tive que entrar em um console de cmd hoje e a falta desse recurso realmente me impressionou. Finalmente, este também funciona com espaços, onde minha resposta anterior falharia.
Além disso, este agora também é capaz de usar ~ como prefixo para outras subpastas domésticas também, e troca barras invertidas para barras invertidas também. Então aqui está;
Etapa 1. Crie essas macros doskey , em algum lugar em que são selecionadas sempre que o cmd é iniciado.
DOSKEY cd=cdtilde.bat $*
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..
Etapa 2. Crie o arquivo cdtilde.bat e coloque-o em algum lugar do seu 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%"
Testado bem com;
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")
Ah, também permite citações preguiçosas, o que achei útil, mesmo quando espaços estão nos nomes dos caminhos da pasta, uma vez que agrupa todos os argumentos como se fosse uma sequência longa. O que significa que apenas uma cotação inicial também funciona, ou completamente sem aspas também funciona.
Todas as outras coisas abaixo podem ser ignoradas agora, são deixadas por razões históricas - por isso não cometo os mesmos erros novamente
atualização antiga 19 de outubro de 2018.
Caso outra pessoa tenha tentado minha abordagem, minha resposta original abaixo não tratou de espaços, por exemplo, a seguinte falhou.
> cd "c:\Program Files"
Files""]==["~"] was unexpected at this time.
Eu acho que deve haver uma maneira de resolver isso. Postarei novamente se eu puder melhorar minha resposta. (veja acima, finalmente consegui fazer tudo funcionar do jeito que eu queria.)
Minha resposta original, ainda precisava de trabalho ... 7 de outubro de 2018.
Eu estava apenas tentando fazê-lo hoje e acho que entendi, é isso que acho que funciona bem;
Primeiro, algumas macros doskey ;
DOSKEY cd=cdtilde.bat $*
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..
e então um arquivo bat no meu caminho;
cdtilde.bat
@echo off
if ["%1"]==["~"] (
chdir /D "%USERPROFILE%"
) else (
chdir /D %*
)
Tudo isso parece funcionar bem;
cd ~ (traditional habit)
cd~ (shorthand version)
cd.. (shorthand for going up..)
.bashrc
arquivo -type: superuser.com/questions/144347/… . Colocar a etapa 1. desta resposta no bashrc.bat
arquivo o definirá na inicialização.
Você pode fazer quase o mesmo você mesmo. Abra Variáveis de ambiente e clique no botão "Novo" em "Variáveis de usuário para ...".
Nome da variável: ~
Valor da variável: Clique no botão "Procurar diretório ..." e escolha o diretório que deseja.
E depois disso, abra o cmd e digite:
cd% ~%
. Funciona.
Eu apenas tentei set ~=%userprofile%
e isso funciona também se você quiser continuar usando o mesmo hábito
Você pode então usar %~%
.
~
= %userprofile%
? Eu executei o comando exato mencionado em sua postagem no prompt de comando, mas ele lança um erro - '~' is not recognized as an internal or external command, operable program or batch file.
. Você pode elaborar sua resposta um pouco mais?
set ~=%userprofile%
, poderá usar %~%
a variável
Acabei de escrever um script para fazer isso sem muita digitação, mantendo a portabilidade como a configuração ~
necessária, e %userprofile%
precisa de uma configuração manual em cada PC com Windows, enquanto a clonagem e a configuração do diretório são parte PATH
mecânica.
Simplesmente
Primeiro Definir Caminho
doskey ~=cd %homepath%
Então acesse
~
Você também pode fazer o cd ...... \ quantas vezes houver pastas que o levem ao diretório inicial. Por exemplo, se você estiver no cd: \ windows \ syatem32, o cd .... \ leva você para a casa, ou seja, c: \
C:\Users\username
pasta (ou c:\Documents and Settings\username
no Windows anterior)
C:\
, é aconselhável usar em cd \
vez de um número indefinido decd ..\..\..