2011-10-19 00:35:44 +0000 2011-10-19 00:35:44 +0000
83
83

¿Cómo puedo encontrar la ruta corta de un directorio/archivo de Windows?

Necesito usar nombres de rutas cortas para una aplicación que estoy usando. Por ejemplo, necesito C:\PROGRA~1 Necesito usar nombres de rutas cortas para una aplicación que estoy usando. Por ejemplo, necesito en lugar deC:\Program Files. El programa no puede manejar espacios y no acepta las rutas citadas (por ejemplo,“C:\Program Files”`).

Si ayuda, estoy usando Windows 7. Puedo acceder a cualquier versión desde XP, si es necesario.

Respuestas (12)

84
84
84
2011-10-19 00:51:45 +0000

Empieza, y escribe cmd en la casilla de ejecución. Inicie el cmd, y use cd para llegar a la carpeta que le interesa:

cd \

Luego

dir /x

C:\>dir /x

13/10/2011 09:14 AM <DIR> DOCUME~1 Documents and Settings
13/10/2011 09:05 AM <DIR> PROGRA~1 Program Files
42
42
42
2014-03-13 23:11:39 +0000

Crear un archivo de murciélago en algún directorio conveniente, entonces podrías copiar+pegar la ruta corta de esa ruta.

Podrías simplemente ejecutar command.com y seguir haciendo comandos cd a tu directorio actual también.

En los scripts por lotes de Windows, %~s1 expande los parámetros de la ruta a los nombres cortos . Crea este archivo por lotes:

@ECHO OFF
echo %~s1

Llamé al mío shortNamePath.cmd y lo llamo así:

C:\> shortNamePath "c:\Program Files (x86)\Android\android-sdk"
c:\PROGRA~2\Android\ANDROI~1

Aquí hay una versión que usa el directorio actual si no se suministró ningún parámetro:

@ECHO OFF
if '%1'=='' (%0 .) else echo %~s1

Llamado sin parámetros:

C:\Program Files (x86)\Android\android-sdk> shortNamePath
C:\PROGRA~2\Android\ANDROI~1

Utilizando SET y una variable con nombre

Windows Command Prompt tiene algunas convenciones para el manejo de variables con espacios en sus valores que son algo difíciles de aprender y entender, especialmente si tienes un fondo Unix.   You can do

SET TESTPATH=c:\Program Files (x86)\Android\android-sdk

(con no comillas), o

SET "TESTPATH=c:\Program Files (x86)\Android\android-sdk"

(note la colocación no intuitiva de las comillas); entonces

CALL :testargs "%TESTPATH%"
        ︙

:testargs
echo %~s1
goto :eof
13
13
13
2017-05-22 06:42:16 +0000

Aquí hay una línea única :

cmd /c for %A in ("C:\Program Files") do @echo %~sA

Breakdown :

  • cmd /c - Inicia una nueva instancia del intérprete de comandos de Windows, lleva a cabo el comando especificado por la cadena y luego termina el comando
  • for %%parameter in (set) do - Realizar condicionalmente un comando varias veces.
  • echo - Muestra mensajes en pantalla. El símbolo @ es el mismo que ECHO OFF aplicado sólo a la línea actual.
  • %~s - La ruta expandida contiene sólo nombres cortos.

Sources :

9
9
9
2011-10-19 01:02:20 +0000

El “nombre corto” es en realidad la vieja convención de nombres del DOS 8.3, así que todos los directorios serán las primeras 6 letras seguidas de ~1 asumiendo que sólo hay un nombre que coincida, por ejemplo:

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\BCDEFG~1 - C:\BCDEFGHIJKL M Another Directory

aquí está la única excepción

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\ABCDEF~2 - C:\ABCDEFGHI Directory as well
7
7
7
2018-05-12 11:16:06 +0000

Encontré una forma muy práctica de resolver la ruta corta del directorio actual (o cualquier otra cosa) si tienes Powershell instalado.

Sólo abre powershell en el directorio actual

  • en cmd windows escribe powershell

  • si tienes la carpeta abierta en gui puedes escribir cmd.exe o powershell.exe directamente en la barra de direcciones de la carpeta.

Luego da el comando

(New-Object -ComObject Scripting.FileSystemObject).GetFolder(".").ShortPath

Origen de la información: [https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]

4
4
4
2018-05-12 15:31:59 +0000

Similar a la respuesta de Ivan Schwartz (https://superuser.com/a/1211528/461558), puedes reemplazar “C:\Archivos de programa” con %cd% para obtener la dirección actual:

cmd /c for %A in ("%cd%") do @echo %~sA
0
0
0
2017-06-23 17:15:55 +0000

Alternativamente, puedes usar esta pequeña herramienta llamada PathCopyCopy

En unos pocos clics, puedes obtener la ruta larga y corta de literalmente cualquier carpeta del menú contextual, por ejemplo:

Clic-derecho en la carpeta de destino => Path Copy => Short Path.

Hecho. Se copiará en su portapapeles. vista previa

0
0
0
2019-11-03 14:38:08 +0000
@echo off
for %%i in (%*) do echo %%~si
pause

Guárdalo como shortpath.bat , y luego arrastra los archivos sobre él. Su resultado:

C:\PROGRA~1
C:\PROGRA~2
C:\PROGRA~3
C:\Python27
C:\Users
C:\Windows
Press any key to continue . . .

Llamarlo con shortpath <file path> también está bien.

0
0
0
2017-12-02 17:57:42 +0000
C:\Users\abcd>subst z: "c:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

C:\Users\abcd>subst
Z:\: => C:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

Esta es la forma más fácil que he usado al tratar con archivos con espacios y esto es accesible desde el explorador de archivos también tiene todos los mismos privilegios de acceso.

0
0
0
2020-01-26 22:04:35 +0000

**NINGUNA de estas soluciones funcionaba en mi portátil de Windows 10 ya que una clave en el registro prohibía la creación de nombres cortos…

  • Alt+r, teclea regedit para abrir el editor de registro
  • ve a HKEY_LOCALMACHINESYSTEM\NCurrentControlSet\Control\NFileSystem
  • busca la clave NtfsDisable8dot3NameCreation : si el valor es 0x00000001(1), entonces su sistema no crea ningún nombre corto para su carpeta/archivo
  • en este caso haga doble clic en la tecla NtfsDisable8dot3NameCreation,
  • escriba 0 en el campo de datos

esto no es retroactivo :) Quiero decir que tienes que recrear la carpeta/archivo al que necesitas acceder desde tu antigua aplicación… quizás algo inteligente es posible aunque no lo sé todavía.

parece que introdujeron esta clave para acelerar las operaciones del sistema de archivos.

fuente microsoft https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc959352(v=technet.10)?redirectedfrom=MSDN

-1
-1
-1
2016-11-06 10:51:58 +0000

He instalado módulos de nodos ejecutando npm install en una placa de calderas. Al intentar borrar esas carpetas, Windows no nos permite borrarlas ya que la ruta es demasiado larga para poder manejarla.

Después de algunas investigaciones superficiales, pensé que sería correcto que mi propio fragmento de código cambiara el nombre de las carpetas de la raíz a la hoja para que también arrojara cualquier excepción de violación para este intento.

Funciona para mí. A continuación el código del proyecto C#.

public static int directoryCounterIndex = 0;
    public static void Main(string[] args)
    {
        string dirPath = @"D:\Studies\MeanStack\a\nodem";
        RenameDirectories(dirPath);
    }

    private static void RenameDirectories(string dirPath)
    {
        directoryCounterIndex += 1;
        var newPath = Path.GetDirectoryName(dirPath) + Path.DirectorySeparatorChar + directoryCounterIndex.ToString();
        Directory.Move(dirPath, newPath);
        var subDirectories = Directory.GetDirectories(newPath);
        foreach (var subDirectory in subDirectories)
        {
            RenameDirectories(subDirectory);
        }
    }
-2
-2
-2
2016-02-10 15:18:55 +0000

Sólo reemplaza los espacios con

%20

Es la forma en que las cosas se “traducen”, y los espacios van en %20.

Si realmente necesitas mucho, simplemente abre tu navegador y escribe algo como

test ";($#< and find the word test, and see that the space is %20 and so on...