Qual è l'equivalente del "~" (tilde) di Linux in Windows?


72

In Linux, possiamo andare a casa dell'utente inserendo il carattere tilde ( ~) dopo cd:

cd ~

Come fare lo stesso in Windows?

Ogni volta, devo digitare:

cd C:\Document and Settings\freewind

È troppo noioso.


2
Considerare l'utilizzo di Cygwin?
Paolo R

8
in realtà, '~' è l'impostazione predefinita per 'cd' nella maggior parte delle shell Linux, quindi solo 'cd' sarebbe sufficiente per andare al tuo homedir


4
La risposta è semplicemente "cd ~" .. significa che puoi usare lo stesso comando anche in Windows. Ma non dovresti provare questo comando in CMD perché è obsoleto ora e il suo sviluppo è interrotto da Microsoft. Utilizzare "Windows PowerShell" e lo stesso comando funzionerà senza problemi.
Apple II

3
PowerShell viene fornito con Win7 +
Isaac Dontje Lindell il

Risposte:


43

cd /d "%HOMEDRIVE%%HOMEPATH%" lo farei - ma non sono sicuro che lo consideri un miglioramento.

Puoi anche definire un alias per il comando sopra:

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

Dopo questo, è semplicemente cdhome.


4
@Freewind: devi amare la shell di Windows predefinita.
Jon,

10
@abatishchev: bella domanda. Questa domanda su SF sembra indicare che è preferibile% USERPROFILE%.
Jon,

3
Puoi anche usare cd ~ come nome della macro, invece se cdhome.
jftuga,

3
@abatishchev: gli account di Windows NT possono avere un percorso "home directory" separato dalla "directory del profilo". Il profilo mantiene le impostazioni (Registro), i dati dell'applicazione e così via. La directory home, d'altra parte, è per i tuoi file - quando un programma visualizza la finestra di dialogo "Apri / Salva" per la prima volta, si avvierà nella directory home. (Windows 95/98 lo ha usato in modo leggermente diverso; non ricordo i dettagli.) Ciò è utile negli ambienti Active Directory, per archiviare i file su una condivisione di rete ma mantenendo il profilo locale.
Grawity,

2
@jftuga: O anche ~.
Grawity

63

Puoi usare cd /d %USERPROFILE%se usi cmd.

oppure puoi usare cd ~se usi PowerShell.


4
+1 ma aggiungi anche virgolette intorno alla variabile (forse è c:\documents and settings\..., gli spazi la romperanno a meno che non sia quotata)
Jon

7
@Jon: cdè un'eccezione. Dal momento che richiede sempre un singolo argomento, la citazione non è necessaria. (Su Windows, i programmi e i built-in devono analizzare da soli la propria riga di comando, la shell non lo fa.) Tuttavia, è sempre consigliabile citare i percorsi .
Grawity,

1
@barlop: di solito CommandLineToArgvW () ; i runtime CLR / MinGW / Cygwin usano anche il proprio equivalente automaticamente prima di chiamare main (). Alcuni programmi, tuttavia, hanno parser scritti interamente da zero, ad esempio, cmd.exese stesso e il suo stravagante /c.
Grawity

1
@barlop: non se stai provando a usare le virgolette (o il reindirizzamento) come parte del comando dato. È /c "C:\foo bar\baz" "my file.txt"o /c "\"C:\foo bar\baz\" \"my file.txt\""o /c ""C:\foo bar\baz" "my file.txt""? La cosa peggiore è che l'analisi dipende dal fatto che sia /sstato specificato in precedenza, dalla presenza di caratteri speciali, dal nome dell'eseguibile C:\foo bar\bazo semplicemente C:\foo...
Grawity

1
@TheLQ Uno script batch è ancora più semplice. Posso ottenere lo stesso risultato digitando un singolo carattere. Vedi la mia risposta qui sotto per una descrizione.
weberc2,

13

Una possibilità è utilizzare il substcomando dal prompt dei comandi:

subst z: C:\Document and Settings\freewind

Ogni volta che vai sull'unità Z :, guarderai la tua cartella utente.

Il rovescio della medaglia è che è necessario eseguirlo ogni volta che accedi. Ho usato un file batch e l'ho appena inserito nella mia cartella di avvio, ma probabilmente ci sono soluzioni più eleganti a questo.

Il vantaggio è che a differenza di un alias doskey, funziona universalmente (Windows Explorer, sfoglia la finestra di dialogo, ecc.), Non solo quando si cambiano le directory al prompt dei comandi. È particolarmente utile per i vecchi programmi con vecchie finestre di dialogo di ricerca che hanno lettere di unità al livello più alto, piuttosto che "desktop".


Puoi mappare un disco e farlo rimappare automaticamente dopo il login. Non è necessario utilizzare subst
phuclv il

1
@ LưuVĩnhPhúc Potrebbe non essere del tutto logico, ma tendo ad evitare le cose di Windows Network Share a meno che non debba davvero usarle. Sento che le prestazioni e l'affidabilità sono ... imprevedibili? Certamente se hai un'alternativa, anzi meglio, per farlo, per favore pubblicala nella sua risposta a beneficio di tutti :)
mo.

6

Puoi farlo:

cd %homepath%

5
Questo si interromperà se sei su un altro disco - ad esempio sei acceso E:e il tuo homedir è accesoC:
Piskvor

4

È possibile creare un file batch chiamato ~.batcontenendo

@echo off
cd /d %USERPROFILE%

E aggiungilo alla tua variabile PATH (Start -> [tasto destro del mouse su "Computer"] -> Proprietà -> "Impostazioni di sistema avanzate" [nella colonna di sinistra] -> "Variabili d'ambiente"

Da lì, basta modificare la variabile PATH per includere la cartella contenente il ~.batfile. (Questo ti permette di invocare il tuo script da qualsiasi luogo usando solo il nome del file, non il percorso assoluto del file)

Inoltre, assicurati che la PATHEXTvariabile di ambiente contenga un punto .BAT(questo ti consente di digitare ~invece di ~.bat).

Quando è necessario utilizzarlo, è sufficiente accedere ~al prompt dei comandi. Questa soluzione è persistente: non dovrai configurarla ogni volta che avvii una shell e non dovrai hackerare il registro.


2

Sfortunatamente, non sono a conoscenza di una soluzione perfetta, ma ci sono un paio di opzioni hacky:

Opzione 1: imposta ~ come alias di comando con doskey

doskey ~=cd /d %USERPROFILE%

Ciò ti consentirà semplicemente di digitare ~e di averlo chdir sul tuo homedir.

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

Ovviamente, questo accorcia il numero di sequenze di tasti per tornare a casa (anche rispetto a Linux), ma è meno robusto poiché non puoi davvero usarlo come parte di un altro percorso o fare molto con esso oltre al semplice cd-home.

Opzione 2: imposta ~ come variabile

Un'altra opzione, se si desidera un'opzione più solida, è impostare una var:

set ~="%USERPROFILE%"

ma usando questo sarebbe usato come:

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

Può anche essere iniettato nella maggior parte dei percorsi e non ti limita semplicemente a fare cd a casa.

Entrambe le opzioni contemporaneamente

Inoltre, è possibile implementare entrambi i metodi contemporaneamente. Se hai% 's attorno ad esso, allora utilizzerà la variabile - altrimenti tratterà ~come un 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>

Un altro suggerimento (correlato in qualche modo):

Questo è meno probabile che sia accettabile su una macchina aziendale, almeno sul tuo PC di casa, per salvare ulteriori battiture, non è una cattiva idea rendere il tuo %USERPROFILE%dir un nome semplice. Come puoi vedere dai miei esempi precedenti, il mio utente dir è C:\Users\a: avevo sempre "aplocher" o "adamp" e quando passavo a una sola lettera, era magico.


1

In Powershell la %variable%sintassi non funziona. Puoi farlo :

cd $env:USERPROFILE

2
È possibile utilizzare cd ~in PowerShell.
wjandrea,

0

Usando PowerShell, puoi provare il seguente metodo per navigare tra le directory da qualsiasi luogo purché tu conosca il tuo nome utente e ti siano concesse le autorizzazioni per la directory dei file.

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

Vedi l'esempio seguente in PowerShell (64 bit). Ho provato questo su una scatola di Windows 7 Pro 64 bit.

Equivalente a Linux Lilde su Windows 7 Pro 64 bit

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.