¿Cuál es la alternativa para ~ (directorio de inicio del usuario) en el símbolo del sistema de Windows?

215

Estoy tratando de usar el símbolo del sistema para mover algunos archivos, estoy acostumbrado al terminal de Linux donde uso ~para especificar mi directorio de inicio. He buscado en todas partes pero parece que no puedo encontrarlo para el símbolo del sistema de Windows ( Documents and Settings\[user])

fenerlitk
fuente

Respuestas:

324

Vas a estar decepcionado: %userprofile%

Sin embargo, puede usar otros terminales. Powershell, que creo que puede obtener en XP y versiones posteriores (y viene preinstalado con Win7), le permite usarlo ~para el directorio de inicio.

Arrendajo
fuente
39

Puede %HOMEDRIVE%%HOMEPATH%para el disco + \docs settings\usernameo \users\username.

Alex K.
fuente
3
Esta respuesta funcionó para un servicio que se ejecuta como cuenta de sistema local. % userprofile% en este caso no lo hace.
DonBecker
15

Puede usar %systemdrive%%homepath%la variable de entorno para lograr esto.

Las dos variables de comando cuando se concatenan le dan la ruta del directorio de inicio del usuario deseado de la siguiente manera:

  1. La ejecución echo %systemdrive%en el símbolo del sistema proporciona:

    C:
    
  2. La ejecución echo %homepath%en el símbolo del sistema proporciona:

    \Users\<CurrentUserName>
    

Cuando se usan juntos se convierte en:

C:\Users\<CurrentUserName>
RBT
fuente
también necesitarás% homedrive%; ver la respuesta de Alex K, arriba
Edward Falk
2
@ EdwardFalk He arreglado mi respuesta. Había olvidado mencionar %systemdrive%la variable de entorno, que es equivalente a la %homedrive%mencionada por Alex. Por favor, dame tu opinión sobre esto si encuentras algo incorrecto.
RBT
8
En Windows, puede mover toda su carpeta de usuario a otra unidad (Ej: D: \ MyUser). En esos escenarios,% systemdrive %% homepath% fallará. % HOMEDRIVE %% HOMEPATH% debería usarse en su lugar.
Daniel Santos
Cierto. Es posible, pero no es tan habitual que las personas cambien estas variables de entorno estándar. En un entorno corporativo habitual, estas variables de entorno se rigen por el departamento de TI a través de políticas de grupo de AD como se menciona aquí y aquí .
RBT
6

Actualización: mejor versión 18 de julio de 2019.

Resumen final, aunque de todos modos pasé a PowerShell para la mayoría de las consolas de Windows, pero decidí resolver este viejo problema de cmd, tuve que usar una consola de cmd hoy, y la falta de esta característica realmente me sorprendió. Finalmente, este también funciona con espacios, donde mi respuesta anterior fallaría.

Además, este ahora también puede usar ~ como prefijo para otras subcarpetas de inicio, y también intercambia barras diagonales hacia barras diagonales inversas. Asi que aqui esta;

Paso 1. Cree estas macros de doskey , en algún lugar donde se recojan cada vez que se inicia cmd.

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

Paso 2. Crea el archivo cdtilde.bat y colócalo en algún lugar de tu RUTA

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

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

Ah, también permite citas flojas, lo que me pareció útil, incluso cuando hay espacios en los nombres de ruta de la carpeta, ya que envuelve todos los argumentos como si fuera una cadena larga. Lo que significa que solo una cita inicial también funciona, o completamente sin comillas también funciona.

Ahora se puede ignorar todo lo demás a continuación, se deja por razones históricas, por lo que no vuelvo a cometer los mismos errores


actualización anterior 19 de octubre de 2018.
En caso de que alguien más haya intentado mi enfoque, mi respuesta original a continuación no manejó espacios, por ejemplo, lo siguiente falló.

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

Creo que debe haber una manera de resolver eso. Publicaré nuevamente si puedo mejorar mi respuesta. (ver arriba, finalmente conseguí que todo funcionara como quería).


Mi respuesta original, todavía necesitaba trabajo ... 7 de octubre de 2018.
Solo estaba tratando de hacerlo hoy, y creo que lo obtuve, esto es lo que creo que funciona bien;

Primero, algunas macros de doskey ;

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

y luego un archivo bat en mi camino;

cdtilde.bat

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

Todo esto parece funcionar bien;

cd ~ (traditional habit)
cd~  (shorthand version)
cd.. (shorthand for going up..)
Christopher Plewright
fuente
Esta respuesta tiene una manera de iniciar CMD con un .bashrcarchivo de tipo: superuser.com/questions/144347/… . Poner el paso 1. de esta respuesta en el bashrc.batarchivo lo configurará al inicio.
Brydenr
2

Si quieres una versión más corta de Jay's, puedes probar

    set usr=%userprofile%
    cd %usr%

O incluso podría usar % u% si quisiera. Ahorra algunas pulsaciones de teclas de todos modos.

Scotty J
fuente
2

Puedes hacer casi lo mismo tú mismo. Abra Variables de entorno y haga clic en el botón "Nuevo" en "Variables de usuario para ...".
Nombre de la variable: ~
Valor de la variable: haga clic en el botón "Examinar directorio ..." y elija el directorio que desee.

Y después de esto, abra cmd y escriba esto:
cd% ~%
. Funciona.

hkaraoglu
fuente
2

Acabo de intentarlo set ~=%userprofile%y eso también funciona si quieres seguir usando el mismo hábito

Luego puede usar %~%en su lugar.

Mark Richer
fuente
2
¿Cómo se configura exactamente el valor de ~= %userprofile%? Ejecuté el comando exacto mencionado en su publicación en el símbolo del sistema pero arroja un error '~' is not recognized as an internal or external command, operable program or batch file.. ¿Puedes por favor elaborar tu respuesta un poco más?
RBT
3
Si utiliza set ~=%userprofile%entonces se puede utilizar %~%para la variable
forresthopkinsa
0

Acabo de escribir un script para hacer esto sin escribir demasiado mientras se mantiene la portabilidad, ya que la configuración ~debe ser %userprofile%una configuración manual en cada PC con Windows mientras se clona y configura el directorio como parte del directorio.PATH mecánica es mecánica.

https://github.com/yxliang01/Snippets/blob/master/windows/

Papas fritas
fuente
0

Simplemente

Primero definir ruta

doskey ~=cd %homepath%

Entonces acceso

~
Matee Gojra
fuente
-5

También puede hacer cd ...... \ tantas veces como haya carpetas que lo lleven al directorio de inicio. Por ejemplo, si está en cd: \ windows \ syatem32, entonces cd .... \ lo lleva a la página de inicio, es decir c: \

samvatsar
fuente
2
home! = c: \ En cambio, el póster original pregunta sobre la C:\Users\usernamecarpeta (o c:\Documents and Settings\usernameen Windows anterior)
v.karbovnichy
Incluso si desea ir a la raíz C:\ , se recomienda usar en cd \ lugar de un número indefinido decd ..\..\..
lcnittl