Qual é o equivalente ao "~" (til) do Linux no Windows?

72

No Linux, podemos acessar a página inicial do usuário digitando o ~caractere til ( ) após cd:

cd ~

Como fazer o mesmo no Windows?

Cada vez, preciso digitar:

cd C:\Document and Settings\freewind

Isso é muito chato.

Vento livre
fonte
2
Considere usar o cygwin?
Paul R
8
na verdade, '~' é o padrão para 'cd' na maioria das conchas Linux, então apenas 'cd' seria suficiente para ir ao seu homedir
@Arnout: Veja stackoverflow.com/questions/998626/…
abatishchev
4
A resposta é simplesmente "cd ~" .. significa que você também pode usar o mesmo comando no Windows. Mas você não deve tentar este comando no CMD, porque está desatualizado agora e seu desenvolvimento foi descontinuado pela Microsoft. Use "Windows PowerShell" e o mesmo comando funcionará sem problemas.
Apple II
3
Navios PowerShell com Win7 +
Isaac Dontje Lindell

Respostas:

43

cd /d "%HOMEDRIVE%%HOMEPATH%" faria isso - mas não tenho certeza se você considera isso uma melhoria.

Você também pode definir um alias para o comando acima:

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

Depois disso, é simplesmente cdhome.

Jon
fonte
4
@ Freewind: Você precisa amar o shell padrão do Windows.
Jon Jon
10
@abatishchev: Boa pergunta. Esta pergunta sobre SF parece indicar que% USERPROFILE% é preferível.
Jon Jon
3
Você também pode usar cd ~ como o nome da macro, em vez se cdhome.
jftuga
3
@abatishchev: as contas do Windows NT podem ter um caminho de "diretório inicial" anexado, separado do "diretório de perfil". O perfil mantém suas configurações (Registro), dados do aplicativo e outros. O diretório inicial, por outro lado, é para seus próprios arquivos - quando um programa exibe a caixa de diálogo "Abrir / Salvar" pela primeira vez, ele inicia no diretório inicial. (O Windows 95/98 o utilizou de maneira um pouco diferente; não se lembra dos detalhes.) Isso é útil nos ambientes do Active Directory, para armazenar arquivos em um compartilhamento de rede, mas mantendo o perfil local.
grawity
2
@jftuga: Ou até ~.
grawity
62

Você pode usar cd /d %USERPROFILE%se você usar o cmd.

ou você pode usar cd ~se você usa o PowerShell.

Noturno
fonte
4
+1 mas também adicionar aspas em torno da variável (talvez seja c:\documents and settings\..., os espaços vão quebrá-lo a menos que ele é citado)
Jon
7
@ Jon: cdé uma exceção. Como sempre é necessário um único argumento, não é necessário citar. (No Windows, programas e built-ins devem analisar suas linhas de comando, o shell não faz isso.) Sempre citar caminhos é uma boa prática.
grawity
11
@barlop: geralmente CommandLineToArgvW () ; os tempos de execução CLR / MinGW / Cygwin também usam seu próprio equivalente automaticamente antes de chamar main (). Alguns programas, no entanto, têm analisadores escritos inteiramente do zero, por exemplo, cmd.exeele próprio e seus malucos /c.
grawity
11
@ Barlop: Não se você estiver tentando usar aspas (ou redirecionamento) como parte do comando fornecido. É /c "C:\foo bar\baz" "my file.txt"ou /c "\"C:\foo bar\baz\" \"my file.txt\""ou /c ""C:\foo bar\baz" "my file.txt""? O que é ainda pior é que a análise depende se /sfoi especificado anteriormente, a presença de caracteres especiais, se o executável é nomeado C:\foo bar\bazou apenas C:\foo...
grawity
11
@TheLQ Um script em lote é ainda mais fácil ainda. Eu consigo o mesmo resultado digitando um único caractere. Veja minha resposta abaixo para uma descrição.
Weberc2
13

Uma possibilidade é usar o substcomando em um prompt de comando:

subst z: C:\Document and Settings\freewind

Sempre que você navegar para dirigir Z :, estará olhando para sua pasta de usuário.

A desvantagem é que você precisa executá-lo sempre que efetuar login. Usei um arquivo em lotes e o coloquei na minha pasta de inicialização, mas provavelmente existem soluções mais elegantes para isso.

O benefício é que, diferentemente de um alias doskey, ele funciona universalmente (Windows Explorer, diálogo de navegação etc.), não apenas ao alterar diretórios no prompt de comando. É especialmente útil para programas antigos com caixas de diálogo de navegação antigas com letras de unidade no nível mais alto, em vez de "área de trabalho".

mo.
fonte
Você pode mapear uma unidade e fazê-la remapear automaticamente após o login. Não há necessidade de usar subst
phuclv
11
@ LưuVĩnhPhúc Pode não ser totalmente lógico, mas eu costumo evitar coisas de compartilhamento de rede do Windows, a menos que eu realmente precise usá-las. Sinto que desempenho e confiabilidade são ... imprevisíveis? Por todos os meios, se você tem uma maneira alternativa, ou melhor, de fazê-lo, poste-o em sua própria resposta para o benefício de todos :)
mo.
6

Você consegue fazer isso:

cd %homepath%
Bali C
fonte
5
Isso vai quebrar se você estiver em uma unidade diferente - por exemplo, você está no E:e seu diretório de usuário é onC:
Piskvor
4

Você pode criar um arquivo em lotes chamado ~.batcontendo

@echo off
cd /d %USERPROFILE%

E adicione-o à sua variável PATH (Iniciar -> [clique com o botão direito do mouse em "Computador"] -> Propriedades -> "Configurações avançadas do sistema" [na coluna esquerda] -> "Variáveis ​​de ambiente"

A partir daí, basta editar sua variável PATH para incluir a pasta que contém seu ~.batarquivo. (Isso permite que você invoque seu script de qualquer lugar usando apenas o nome do arquivo - não o caminho absoluto para o arquivo)

Além disso, verifique se a PATHEXTvariável de ambiente contém .BATalgum lugar (isso permite digitar em ~vez de ~.bat).

Quando você precisar usá-lo, basta entrar ~no prompt de comando. Essa solução é persistente - você não precisará configurá-la toda vez que iniciar um shell e não precisará invadir seu registro.

weberc2
fonte
2

Infelizmente, não conheço uma solução perfeita, mas há algumas opções de hacky:

Opção 1: defina ~ como um alias de comando com doskey

doskey ~=cd /d %USERPROFILE%

Isso permitirá que você simplesmente digite ~e faça chdir para o seu homedir.

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

Obviamente, isso reduz o número de pressionamentos de teclas para chegar em casa (mesmo em comparação ao Linux), mas é menos robusto, pois você não pode realmente usá-lo como parte de outro caminho ou fazer muito com ele além de apenas gravar em casa.

Opção 2: defina ~ para ser uma variável

Outra opção, se você quiser uma opção mais robusta, é definir uma var:

set ~="%USERPROFILE%"

mas usando isso seria usado como:

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

Também pode ser injetado na maioria dos caminhos e não o limita a simplesmente entrar em casa.

Ambas as opções simultaneamente

Além disso, você pode implementar os dois métodos simultaneamente. Se você tiver o% 's ao seu redor, utilizará a variável - caso contrário, ela será tratada ~como um comando.

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>

Mais uma dica (relacionada):

É menos provável que isso seja aceitável em uma máquina corporativa, pelo menos no seu PC doméstico, para salvar pressionamentos de tecla adicionais; não é uma má idéia tornar seu %USERPROFILE%diretório um nome simples. Como você pode ver nos meus exemplos acima, meu diretório de usuário é C:\Users\a- eu sempre tinha 'aplocher' ou 'adamp' e quando mudei para uma única letra, era mágico.

Adam Plocher
fonte
1

No PowerShell, a %variable%sintaxe não funciona. Você consegue fazer isso :

cd $env:USERPROFILE
Elzo
fonte
2
Você pode usar cd ~no PowerShell.
Wjandrea
0

Usando o PowerShell, você pode tentar o seguinte método para navegar nos diretórios de qualquer lugar, desde que você saiba seu nome de usuário e tenha permissões de diretório de arquivos concedidas.

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

Veja o exemplo abaixo no PowerShell (64 bits). Eu testei isso em uma caixa de 64 bits do Windows 7 Pro.

Linux Lilde equivalente no Windows 7 Pro de 64 bits

Matriz completa
fonte