Quel est l'équivalent de «~» (tilde) de Linux dans Windows?

72

Sous Linux, nous pouvons aller à la maison de l'utilisateur en entrant le caractère tilde ( ~) après cd:

cd ~

Comment faire la même chose sous Windows?

A chaque fois, je dois taper:

cd C:\Document and Settings\freewind

C'est trop ennuyeux.

Vent libre
la source
2
Envisagez d'utiliser cygwin?
Paul R
8
En fait, '~' est la valeur par défaut pour 'cd' sous la plupart des shells Linux, donc 'cd' suffirait pour aller dans votre répertoire personnel
@Arnout: See stackoverflow.com/questions/998626/…
abatishchev
4
La réponse est simplement "cd ~" .. signifie que vous pouvez aussi utiliser la même commande sous Windows. Cependant, vous ne devriez pas essayer cette commande dans CMD car elle est obsolète maintenant et son développement est arrêté par Microsoft. Utilisez "Windows PowerShell" et la même commande fonctionnera sans problème.
Apple II
3
PowerShell est livré avec Win7 +
Isaac Dontje Lindell

Réponses:

43

cd /d "%HOMEDRIVE%%HOMEPATH%" le ferais - mais je ne suis pas sûr si vous considérez cela comme une amélioration.

Vous pouvez également définir un alias pour la commande ci-dessus:

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

Après cela, c'est simplement cdhome.

Jon
la source
4
@ Freewind: il faut aimer le shell Windows par défaut.
Jon
10
@abatishchev: bonne question. Cette question sur SF semble indiquer que% USERPROFILE% est préférable.
Jon
3
Vous pouvez également utiliser cd ~ comme nom de macro, à la place si cdhome.
Jftuga
3
@abatishchev: les comptes Windows NT peuvent avoir un chemin d'accès "répertoire de base" distinct du "répertoire de profil". Le profil conserve vos paramètres (registre), les données d'application, etc. Le répertoire de base, par contre, est destiné à vos propres fichiers . Lorsqu'un programme affiche la boîte de dialogue "Ouvrir / Enregistrer" pour la première fois, il commence par le répertoire de base. (Windows 95/98 l'a utilisé un peu différemment; je ne me souviens pas des détails.) Ceci est utile dans les environnements Active Directory, pour stocker des fichiers sur un partage réseau tout en conservant le profil local.
Grawity
2
@ jftuga: Ou même ~.
Grawity
63

Vous pouvez utiliser cd /d %USERPROFILE%si vous utilisez cmd.

ou vous pouvez utiliser cd ~si vous utilisez PowerShell.

Nocturn
la source
4
+1 mais aussi ajouter des guillemets autour de la variable (peut-être que c:\documents and settings\...les espaces le sépareront)
Jon
7
@ Jon: cdest une exception. Comme il faut toujours un seul argument, la citation n'est pas nécessaire. (Sous Windows, les programmes et les Encastrements doivent analyser leur ligne de commande eux - mêmes, le shell ne le fait pas.) Citant toujours des chemins est cependant une bonne pratique,.
Grawity
1
@barlop: généralement CommandLineToArgvW () ; Les environnements d'exécution CLR / MinGW / Cygwin utilisent également leur propre équivalent automatiquement avant d'appeler main (). Certains programmes, cependant, ont des analyseurs syntaxiques entièrement écrits à partir de zéro, par exemple, cmd.exelui-même et son farfelu /c.
Grawity
1
@barlop: Pas si vous essayez d'utiliser des guillemets (ou une redirection) dans le cadre de la commande donnée. Est-ce /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""? Ce qui est encore pire, c’est que l’analyse dépend de la nature /sspécifiée, de la présence de caractères spéciaux, du nom de l’exécutable C:\foo bar\bazou de C:\foo...
grawity
1
@TheLQ Un script batch est encore plus simple. Je peux obtenir le même résultat en tapant un seul caractère. Voir ma réponse ci-dessous pour une description.
weberc2
13

Une possibilité consiste à utiliser la substcommande à partir d'une invite de commande:

subst z: C:\Document and Settings\freewind

Chaque fois que vous accédez au lecteur Z:, vous consultez votre dossier d’utilisateur.

L'inconvénient est que vous devez l'exécuter à chaque fois que vous vous connectez. J'ai utilisé un fichier de traitement par lots et je l'ai simplement placé dans mon dossier de démarrage, mais il existe probablement des solutions plus élégantes à cet égard.

L'avantage est que, contrairement à un alias doskey, il fonctionne de manière universelle (explorateur Windows, boîte de dialogue de navigation, etc.), pas seulement lorsque vous modifiez des répertoires à l'invite de commande. Cela est particulièrement utile pour les anciens programmes dotés d'anciennes boîtes de dialogue de navigation comportant des lettres de lecteur au plus haut niveau, plutôt que "bureau".

mo
la source
Vous pouvez mapper un lecteur et le remapper automatiquement après la connexion. Pas besoin d'utiliser subst
phuclv le
1
@ LưuVĩnhPhúc Ce n'est peut-être pas tout à fait logique, mais j'ai tendance à éviter les partages réseau entre Windows, sauf si je dois vraiment les utiliser. Je pense que la performance et la fiabilité sont ... imprévisibles? Bien sûr, si vous avez une alternative, sinon meilleure, une façon de le faire, merci de l'afficher dans sa propre réponse pour le bénéfice de tout le monde :)
mo.
6

Tu peux le faire:

cd %homepath%
Bali C
la source
5
Cela cassera si vous êtes sur un lecteur différent - par exemple, vous êtes sur E:et votre homedir est C:
allumé
4

Vous pouvez créer un fichier de commandes appelé ~.batcontenant

@echo off
cd /d %USERPROFILE%

Et ajoutez-le à votre variable PATH (Démarrer -> [cliquez sur le bouton droit de la souris sur "Ordinateur"] -> Propriétés -> "Paramètres système avancés" [dans la colonne de gauche] -> "Variables d'environnement".

À partir de là, il suffit de modifier votre variable PATH pour inclure le dossier contenant votre ~.batfichier. (Cela vous permet d'appeler votre script de n'importe où en utilisant simplement le nom du fichier - pas le chemin absolu du fichier)

Assurez-vous également que votre PATHEXTvariable d’environnement contient .BATquelque part (cela vous permet de taper à la ~place de ~.bat).

Lorsque vous avez besoin de l'utiliser, entrez-le simplement ~à l'invite de commande. Cette solution est persistante - vous n’aurez pas à la configurer chaque fois que vous lancez un shell, ni à pirater votre base de registre.

weberc2
la source
2

Malheureusement, je ne connais pas de solution parfaite, mais il existe plusieurs options de hacky:

Option 1: Définissez ~ pour être un alias de commande avec doskey

doskey ~=cd /d %USERPROFILE%

Cela vous permettra de taper simplement ~et de l’afficher dans votre répertoire personnel.

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

Évidemment, cela réduit le nombre de frappes au clavier pour rentrer chez soi (même par rapport à Linux), mais est moins robuste car vous ne pouvez pas vraiment l'utiliser dans le cadre d'un autre chemin ou en faire beaucoup plus que de simplement rentrer à la maison.

Option 2: Définir ~ pour être une variable

Une autre option, si vous voulez une option plus robuste, consiste à définir une var:

set ~="%USERPROFILE%"

mais en utilisant ceci serait utilisé comme:

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

Il peut également être injecté dans la plupart des chemins et ne vous limite pas à la maison.

Les deux options simultanément

En outre, vous pouvez implémenter les deux méthodes simultanément. Si vous avez le% autour de lui, alors il utilisera la variable - sinon, il sera traité ~comme une commande.

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>

Un autre conseil (un peu lié):

Cela est moins susceptible d’être acceptable sur une machine d’entreprise, du moins sur votre PC personnel, pour économiser des frappes supplémentaires, ce n’est pas une mauvaise idée de donner à votre %USERPROFILE%répertoire un nom simple. Comme vous pouvez le constater à partir des exemples ci-dessus, mon C:\Users\arépertoire utilisateur est le suivant : j’avais toujours «aplocher» ou «adamp» et, lorsque j’ai changé pour une seule lettre, c’était magique.

Adam Plocher
la source
1

Dans Powershell, la %variable%syntaxe ne fonctionne pas. Tu peux le faire :

cd $env:USERPROFILE
Elzo
la source
2
Vous pouvez utiliser cd ~dans PowerShell.
wjandrea
0

À l’aide de PowerShell, vous pouvez utiliser la méthode suivante pour naviguer dans les répertoires où que vous soyez, à condition de connaître votre nom d’utilisateur et d’obtenir des autorisations pour le répertoire de fichiers.

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

Voir l'exemple ci-dessous dans PowerShell (64 bits). J'ai testé cela sur une boîte Windows 7 Pro 64bit.

Equivalent Linux Lilde sur Windows 7 Pro 64 Bit

Tableau complet
la source