Qual è l'alternativa per ~ (home directory dell'utente) sul prompt dei comandi di Windows?


215

Sto cercando di utilizzare il prompt dei comandi per spostare alcuni file, sono abituato al terminale Linux dove utilizzo ~per specificare la mia home directory che ho cercato ovunque ma non riesco a trovarlo per il prompt dei comandi di Windows ( Documents and Settings\[user])

Risposte:


325

Rimarrai deluso: %userprofile%

Tuttavia, puoi usare altri terminali. Powershell, che credo si possa ottenere su XP e versioni successive (e viene preinstallato con Win7), consente di utilizzarlo ~per la directory home.


39

È possibile %HOMEDRIVE%%HOMEPATH%per l'unità + \docs settings\usernameo \users\username.


3
Questa risposta ha funzionato per un servizio in esecuzione come account di sistema locale. % userprofile% in questo caso no.
DonBecker,

15

È possibile utilizzare %systemdrive%%homepath%la variabile di ambiente per ottenere questo risultato.

Le due variabili di comando concatenate forniscono il percorso della directory home dell'utente desiderato come indicato di seguito:

  1. L'esecuzione echo %systemdrive%sul prompt dei comandi fornisce:

    C:
    
  2. L'esecuzione echo %homepath%sul prompt dei comandi fornisce:

    \Users\<CurrentUserName>
    

Se usato insieme diventa:

C:\Users\<CurrentUserName>

avrai anche bisogno di% homedrive%; vedi la risposta di Alex K, sopra
Edward Falk,

2
@EdwardFalk Ho corretto la mia risposta. Mi ero perso di menzionare %systemdrive%la variabile d'ambiente che è equivalente a quella %homedrive%menzionata da Alex. Ti prego di darmi il tuo feedback su questo se trovi qualcosa di sbagliato.
RBT,

8
In Windows è possibile spostare l'intera cartella dell'utente su un'altra unità (es: D: \ MyUser). In questi scenari% systemdrive %% homepath% fallirà. In alternativa, utilizzare% HOMEDRIVE %% HOMEPATH%.
Daniel Santos,

Vero. È possibile ma non è così normale per le persone cambiare queste variabili d'ambiente standard. In un normale ambiente aziendale, queste variabili di ambiente sono regolate dal dipartimento IT attraverso i criteri del gruppo AD, come indicato qui e qui .
RBT,

6

Aggiornamento - versione migliore 18 luglio 2019.

Riepilogo finale, anche se sono passato a PowerShell per la maggior parte dei lavori su console Windows, ma ho deciso di concludere questo vecchio problema di cmd, oggi ho dovuto salire su una console di cmd e la mancanza di questa funzionalità mi ha davvero colpito. Questo finalmente funziona anche con gli spazi, dove la mia risposta precedente avrebbe fallito.

Inoltre, questo ora è anche in grado di usare ~ come prefisso anche per altre sottocartelle domestiche, e scambia anche le barre in avanti con quelle posteriori. Quindi eccolo qui;

Passaggio 1. Creare queste macro doskey , da qualche parte vengono raccolte ogni volta che si avvia cmd.

DOSKEY cd=cdtilde.bat $* 
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..

Passaggio 2. Creare il file cdtilde.bat e inserirlo in qualche punto del PERCORSO

@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%"

Testato bene con;

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")

Oh, inoltre, consente la citazione pigra, che ho trovato utile, anche quando gli spazi sono nei nomi dei percorsi delle cartelle, poiché avvolge tutti gli argomenti come se fosse una stringa lunga. Il che significa che funziona anche solo una citazione iniziale o funziona anche completamente senza virgolette.

Tutte le altre cose qui sotto possono essere ignorate ora, è lasciato per motivi storici - quindi non commetto più gli stessi errori


vecchio aggiornamento del 19 ottobre 2018.
Nel caso in cui qualcun altro abbia provato il mio approccio, la mia risposta originale di seguito non ha gestito gli spazi, ad esempio il seguente non è riuscito.

> cd "c:\Program Files"
Files""]==["~"] was unexpected at this time.

Penso che ci debba essere un modo per risolverlo. Pubblicherò di nuovo se posso migliorare la mia risposta. (vedi sopra, finalmente ho fatto funzionare tutto come volevo.)


La mia risposta originale,
avevo ancora bisogno di lavoro ... 7 ottobre 2018. Stavo solo provando a farlo oggi, e penso di averlo ottenuto, questo è quello che penso funzioni bene;

Innanzitutto, alcune macro doskey ;

DOSKEY cd=cdtilde.bat $* 
DOSKEY cd~=chdir /D "%USERPROFILE%"
DOSKEY cd..=chdir ..

e poi un file bat nel mio percorso;

cdtilde.bat

@echo off
if ["%1"]==["~"] ( 
    chdir /D "%USERPROFILE%"
) else ( 
    chdir /D %* 
)

Tutti questi sembrano funzionare bene;

cd ~ (traditional habit)
cd~  (shorthand version)
cd.. (shorthand for going up..)

Questa risposta ha un modo per avviare CMD con un .bashrcfile di tipo: superuser.com/questions/144347/… . Inserendo il passaggio 1. da questa risposta nel bashrc.batfile verrà impostato all'avvio.
Brydenr,

2

Se vuoi una versione più breve di Jay, puoi provare

    set usr=%userprofile%
    cd %usr%

Oppure potresti anche usare % u% se lo desideri. Salva comunque alcuni tasti.


2

Puoi fare quasi lo stesso da solo. Apri Variabili d'ambiente e fai clic sul pulsante "Nuovo" in "Variabili utente per ...".
Nome variabile: ~
Valore variabile: fare clic sul pulsante "Sfoglia directory ..." e scegliere la directory desiderata.

E dopo questo, apri cmd e digita questo:
cd% ~%
. Funziona.


2

Ho appena provato set ~=%userprofile%e funziona anche se vuoi continuare a usare la stessa abitudine

È quindi possibile utilizzare %~%invece.


2
Come si imposta esattamente il valore di ~= %userprofile%? Ho eseguito il comando esatto menzionato nel tuo post sul prompt dei comandi ma genera errore - '~' is not recognized as an internal or external command, operable program or batch file.. Puoi per favore elaborare la tua risposta un po 'di più?
RBT,

3
Se lo usi set ~=%userprofile%, puoi usarlo %~%per la variabile
forresthopkinsa


0

Semplicemente

Primo Definisci percorso

doskey ~=cd %homepath%

Quindi accedere

~

-5

Puoi anche fare cd ...... \ quante volte ci sono cartelle che ti portano nella directory home. Ad esempio, se sei in cd: \ windows \ syatem32, allora cd .... \ ti porta a casa, ovvero c: \


2
home! = c: \ Invece, Poster originale chiede sulla C:\Users\usernamecartella (o c:\Documents and Settings\usernamenelle precedenti Windows)
v.karbovnichy,

Anche se volessi andare alla radice C:\ , si consiglia piuttosto di utilizzare cd \ invece di un numero indefinito dicd ..\..\..
lcnittl
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.