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

Como posso encontrar o caminho curto de um directório/arquivo Windows?

Preciso de utilizar nomes de caminhos curtos para uma aplicação que estou a utilizar. Por exemplo, preciso do C:\PROGRA~1 Preciso de utilizar nomes de caminhos curtos para uma aplicação que estou a utilizar. Por exemplo, preciso do em vez doC:\Program Files. O programa não consegue lidar com espaços e não aceita caminhos citados (por exemplo,“C:\Program Files”`).

Se ajudar, estou a usar o Windows 7. Posso ter acesso a qualquer versão desde XP, se necessário.

Respostas (12)

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

Arranque, e digite cmd na caixa de corrida. Inicie cmd, e use cd para chegar à pasta em que está interessado:

cd \

Depois

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

Crie um ficheiro bat em algum directório conveniente e depois pode copiar+colar o caminho curto desse caminho.

Pode simplesmente correr command.com e continuar a fazer comandos cd para o seu directório actual também.

Em scripts batch do Windows, %~s1 expande os parâmetros do caminho para nomes curtos . Crie este ficheiro batch:

@ECHO OFF
echo %~s1

Eu chamei o meu shortNamePath.cmd e chamei-o assim:

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

Aqui está uma versão que usa o directório actual se nenhum parâmetro foi fornecido:

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

Chamado sem parâmetros:

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

Using SET e uma variável chamada

Windows Command Prompt tem algumas convenções para lidar com variáveis com espaços nos seus valores que são um pouco difíceis de aprender e entender, especialmente se você tem um fundo Unix.   You can do

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

(com no* aspas), ou

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

(note a colocação não-intuitiva de aspas); depois

CALL :testargs "%TESTPATH%"
        ︙

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

Here is a one liner :

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

Breakdown :

  • cmd /c - Inicia uma nova instância do interpretador de comandos do Windows, executa o comando especificado por string e depois termina o comando
  • for %%parameter in (set) do - Executa um comando condicionalmente várias vezes.
  • echo - Mostra mensagens no ecrã. O símbolo @ é o mesmo que ECHO OFF aplicado apenas à linha actual.
  • %~s - Caminho expandido contém apenas nomes curtos.

Fontes :

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

O “nome curto” é realmente a antiga convenção de nomes DOS 8.3, pelo que todos os directórios serão as primeiras 6 letras seguidas de ~1, assumindo que existe apenas um nome que corresponde, por exemplo:

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

aqui é a única excepção

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

Encontrei uma forma muito útil de resolver o pequeno caminho do directório actual (ou qualquer outra coisa) se tiver instalado Powershell.

Basta abrir powershell no dir actual

  • nas janelas cmd digite powershell

  • se tiver a pasta aberta em gui pode digitar cmd.exe ou powershell.exe directamente na barra de endereço da pasta.

Depois dê o comando

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

Origem da informação: [https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]

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

Semelhante ao resposta de Ivan Schwartz, você pode substituir “C:\Program Files” por %cd% para obter o dir actual:

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

Em alternativa, pode utilizar esta pequena e fantástica ferramenta chamada PathCopyCopy

Em poucos cliques, pode obter o caminho longo e curto de literalmente qualquer pasta do menu contextual, por exemplo:

Botão direito do rato na pasta de destino => Path Copy => Short Path.

Feito. Será copiado para a sua área de transferência. preview

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

Guarde-o como shortpath.bat , e depois arraste os ficheiros sobre ele. O seu resultado:

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

Chamá-lo com shortpath <file path> também é OK.

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 é a forma mais fácil que já utilizei quando lido com ficheiros com espaços e isto é acessível a partir do explorador de ficheiros também tem todos os mesmos privilégios de acesso.

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

para Windows 10 utilizadores*** NENHUM** destas soluções estava a funcionar no meu portátil Windows 10, uma vez que uma chave no registo proibia a criação de nomes curtos.

  • Alt+r, tipo regedit para abrir o editor do registo
  • ir para HKEY_LOCAL\SYSTEM\CurrentControlSet\Control\FileSystem
  • procurar a chave NtfsDisable8dot3NameCreation : se o valor for 0x00000001(1), então o seu sistema não cria nenhum nome curto para a sua pasta/arquivo
  • neste caso duplo clique na tecla NtfsDisable8dot3NameCreation,
  • tipo 0 no campo de dados

** esta não é retroactiva** :) Quer dizer que precisa de recriar a pasta/arquivo que precisa de aceder a partir da sua antiga aplicação… talvez algo inteligente seja possível, embora ainda não saiba.

parece que introduziram esta chave para acelerar as operações do sistema de ficheiros.

source 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

Instalei módulos de nodo por meio de npm install em uma placa de caldeira. Ao tentar apagar essas pastas, o windows não nos permite apagá-las, pois o caminho é demasiado longo para ser capaz de manusear.

Depois de alguma pesquisa superficial, pensei que seria correcto o meu próprio fragmento de código renomear as pastas da raiz para a folha, de modo a que também fosse possível lançar qualquer excepção de violação para esta tentativa.

Funciona para mim. Segue-se o código para o projecto 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

Basta substituir os espaços por

%20

É assim que as coisas são “traduzidas”, e os espaços vão para %20.

Se precisar mesmo muito, basta abrir o navegador e digitar algo como

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