¿Cuál es el equivalente de "~" (tilde) de Linux en Windows?

72

En Linux, podemos ir al inicio del usuario ingresando el carácter tilde ( ~) después de cd:

cd ~

¿Cómo hacer lo mismo en Windows?

Cada vez, necesito escribir:

cd C:\Document and Settings\freewind

Eso es muy aburrido.

Viento libre
fuente
2
¿Considera usar cygwin?
Paul R
8
en realidad, '~' es el valor predeterminado para 'cd' en la mayoría de los shells de Linux, por lo que solo 'cd' sería suficiente para ir a su homedir
@Arnout: consulte stackoverflow.com/questions/998626/…
abatishchev el
44
La respuesta es simplemente "cd ~" ... significa que también puedes usar el mismo comando en Windows. Pero no debe probar este comando en CMD porque ahora está desactualizado y Microsoft ha descontinuado su desarrollo. Use "Windows PowerShell" y el mismo comando funcionará sin problemas.
Apple II
3
PowerShell se envía con Win7 +
Isaac Dontje Lindell

Respuestas:

43

cd /d "%HOMEDRIVE%%HOMEPATH%" lo haría, pero no estoy seguro si lo considera una mejora.

También puede definir un alias para el comando anterior:

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

Después de esto, es simplemente cdhome.

Jon
fuente
44
@Freewind: Tienes que amar el shell predeterminado de Windows.
Jon
10
@abatishchev: Buena pregunta. Esta pregunta sobre SF parece indicar que% USERPROFILE% es preferible.
Jon
3
También puede usar cd ~ como nombre de macro, en su lugar si cdhome.
jftuga
3
@abatishchev: las cuentas de Windows NT pueden tener una ruta de acceso al "directorio de inicio" que está separada del "directorio de perfil". El perfil mantiene su configuración (registro), datos de la aplicación y demás. El directorio de inicio, por otro lado, es para sus propios archivos : cuando un programa muestra el cuadro de diálogo "Abrir / Guardar" por primera vez, se iniciará en el directorio de inicio. (Windows 95/98 lo usó de manera algo diferente; no puedo recordar los detalles). Esto es útil en entornos de Active Directory, para almacenar archivos en una red compartida pero mantener el perfil local.
Grawity
2
@jftuga: O incluso ~.
Grawity
63

Puede usar cd /d %USERPROFILE%si usa cmd.

o puede usar cd ~si usa PowerShell.

Nocturn
fuente
44
+1 pero también agrega comillas alrededor de la variable (tal vez sea c:\documents and settings\..., los espacios lo dividirán a menos que se cite)
Jon
77
@ Jon: cdes una excepción. Como siempre toma un solo argumento, no es necesario citar. (En Windows, los programas y las funciones integradas deben analizar su línea de comandos, el shell no lo hace) . Sin embargo, siempre es una buena práctica citar rutas .
Grawity
1
@barlop: generalmente CommandLineToArgvW () ; los tiempos de ejecución CLR / MinGW / Cygwin también usan su propio equivalente automáticamente antes de llamar a main (). Algunos programas, sin embargo, tienen analizadores escritos completamente desde cero, por ejemplo, en cmd.exesí mismo y su locura /c.
Grawity
1
@barlop: no si estás intentando usar comillas (o redireccionamiento) como parte del comando dado. ¿Es /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""? Lo que es aún peor es que el análisis depende de si /sse especificó anteriormente, la presencia de caracteres especiales, si el ejecutable se llama C:\foo bar\bazo simplemente C:\foo...
grawity 11/11/11
1
@TheLQ Un script por lotes es aún más fácil aún. Puedo lograr el mismo resultado escribiendo un solo carácter. Vea mi respuesta a continuación para obtener una descripción.
weberc2
13

Una posibilidad es usar el substcomando desde un símbolo del sistema:

subst z: C:\Document and Settings\freewind

Cada vez que navegue para conducir Z :, estará mirando su carpeta de usuario.

La desventaja es que debe ejecutarlo cada vez que inicie sesión. Utilicé un archivo por lotes y lo puse en mi carpeta de inicio, pero probablemente hay soluciones más elegantes para esto.

El beneficio es que, a diferencia de un alias de doskey, funciona de manera universal (explorador de Windows, diálogo de exploración, etc.), no solo cuando se cambian los directorios en el símbolo del sistema. Es especialmente útil para programas antiguos con antiguos cuadros de diálogo de exploración que tienen letras de unidad en el nivel superior, en lugar de "escritorio".

mes.
fuente
Puede asignar una unidad y hacer que se reasigne automáticamente después de iniciar sesión. No es necesario usar subst
phuclv
1
@ LưuVĩnhPhúc Puede que no sea completamente lógico, pero tiendo a evitar que la red de Windows comparta cosas a menos que realmente tenga que usarlas. Siento que el rendimiento y la fiabilidad son ... impredecibles? Por supuesto, si tiene una forma alternativa, mejor aún, de hacerlo, publíquela en su propia respuesta para beneficio de todos :)
mes.
6

Puedes hacerlo:

cd %homepath%
Bali C
fuente
55
Esto se romperá si está en un viaje diferente, por ejemplo, si está en E:marcha y su homedir está en funcionamientoC:
Piskvor
4

Puede crear un archivo por lotes llamado que ~.batcontiene

@echo off
cd /d %USERPROFILE%

Y agréguelo a su variable PATH (Inicio -> [haga clic con el botón derecho en "Computadora"] -> Propiedades -> "Configuración avanzada del sistema" [en la columna izquierda] -> "Variables de entorno"

A partir de ahí, solo edite su variable PATH para incluir la carpeta que contiene su ~.batarchivo. (Esto le permite invocar su script desde cualquier lugar utilizando solo el nombre del archivo, no la ruta absoluta al archivo)

Además, asegúrese de que su PATHEXTvariable de entorno contenga .BATalgún lugar (esto le permite escribir en ~lugar de ~.bat).

Cuando necesite usarlo, simplemente ingrese ~en el símbolo del sistema. Esta solución es persistente: no tendrá que configurarla cada vez que inicie un shell y no necesitará piratear su registro.

weberc2
fuente
2

Desafortunadamente, no conozco una solución perfecta, pero hay un par de opciones extravagantes:

Opción 1: Establecer ~ para ser un alias de comando con doskey

doskey ~=cd /d %USERPROFILE%

Esto te permitirá simplemente escribir ~y tenerlo chdir a tu homedir.

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

Obviamente, esto acorta el número de pulsaciones de teclas para llegar a casa (incluso en comparación con Linux), pero es menos robusto, ya que no se puede usar como parte de otra ruta o hacer mucho más allá de simplemente acceder a casa.

Opción 2: establecer ~ para ser una variable

Otra opción, si desea una opción más robusta es establecer una var:

set ~="%USERPROFILE%"

pero usar esto se usaría como:

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

También se puede inyectar en la mayoría de los caminos y no lo limita a simplemente cd'ing home.

Ambas opciones simultáneamente

Además, puede implementar ambos métodos simultáneamente. Si tiene los% 's alrededor, entonces utilizará la variable; de ​​lo contrario, se tratará ~como 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>

Otro consejo (algo relacionado):

Es menos probable que esto sea aceptable en una máquina corporativa, al menos en la PC de su hogar, para guardar pulsaciones de teclas adicionales, no es una mala idea hacer que su %USERPROFILE%directorio sea un nombre simple. Como puede ver en mis ejemplos anteriores, mi directorio de usuario es C:\Users\a: solía tener siempre 'aplocher' o 'adamp' y cuando cambiaba a una sola letra, era mágico.

Adam Plocher
fuente
1

En Powershell, la %variable%sintaxis no funciona. Puedes hacerlo :

cd $env:USERPROFILE
Elzo
fuente
2
Puedes usar cd ~en PowerShell.
wjandrea
0

Con PowerShell, puede probar el siguiente método para navegar por los directorios desde cualquier lugar siempre que conozca su nombre de usuario y tenga permisos de directorio de archivos otorgados.

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

Vea el ejemplo a continuación en PowerShell (64 bits). Probé esto en una caja de Windows 7 Pro de 64 bits.

Linux Lilde equivalente en Windows 7 Pro 64 Bit

Matriz completa
fuente