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

Resuelto fenerlitk asked hace 12 años • 13 respuestas

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

fenerlitk avatar Feb 10 '12 21:02 fenerlitk
Aceptado

Te vas a decepcionar:%userprofile%

Sin embargo, puedes utilizar otros terminales. Powershell, que creo que puedes obtener en XP y versiones posteriores (y viene preinstalado con Win7), te permite usarlo ~como directorio de inicio.

Jay avatar Feb 10 '2012 14:02 Jay

Puedes %HOMEDRIVE%%HOMEPATH%hacerlo con el disco + \docs settings\usernameo \users\username.

Alex K. avatar Feb 10 '2012 14:02 Alex K.

Puede utilizar la variable de entorno %homedrive%%homepath% para lograr esto.

Las dos variables de comando, cuando se concatenan, le brindan la ruta del directorio de inicio del usuario deseado como se muestra a continuación:

  1. Al ejecutar echo %homedrive% en el símbolo del sistema se obtiene:

    C:
    
  2. Al ejecutar echo %homepath% en el símbolo del sistema se obtiene:

    \Users\<CurrentUserName>
    

Cuando se usan juntos %homedrive%%homepath% se obtiene:

C:\Users\<CurrentUserName>
RBT avatar Mar 23 '2017 02:03 RBT

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

Resumen final, aunque de todos modos pasé a PowerShell para la mayoría de los trabajos de consola de Windows, pero decidí resolver este antiguo problema de cmd, tuve que acceder a una consola cmd hoy y la falta de esta característica realmente me llamó la atención. Éste finalmente 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 por barras invertidas. Asi que aqui esta;

Paso 1. Cree estas macros doskey , en algún lugar se recogerán cada vez que se inicie 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 las comillas diferidas, lo cual me resultó útil, incluso cuando hay espacios en los nombres de las rutas de las carpetas, ya que envuelve todos los argumentos como si fueran una cadena larga. Lo que significa que también funciona solo una cita inicial, o completamente sin comillas.

Todas las demás cosas que aparecen a continuación pueden ignorarse ahora, se dejan por razones históricas, para no volver a cometer los mismos errores.


Actualización anterior del 19 de octubre de 2018.
En caso de que alguien más haya probado mi enfoque, mi respuesta original a continuación no maneja espacios; por ejemplo, lo siguiente falló.

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

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


Mi respuesta original, todavía necesitaba trabajo... 7 de octubre de 2018.
Estaba intentando hacerlo hoy y creo que lo logré, 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 avatar Oct 07 '2018 12:10 Christopher Plewright

Lo acabo de intentar set ~=%userprofile%y funciona también si quieres seguir usando el mismo hábito.

Luego puedes usar %~%en su lugar.

Mark Richer avatar Oct 24 '2016 20:10 Mark Richer