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

57

Eu preciso usar nomes de caminho abreviados para um aplicativo que estou usando. Por exemplo, eu preciso de C:\PROGRA~1\ em oposição a C:\Program Files . O programa não pode manipular espaços e não aceita caminhos citados (por exemplo, "C:\Program Files" ).

Se isso ajudar, estou usando o Windows 7. Eu posso ter acesso a qualquer versão desde o XP, se necessário.

    
por somehume 19.10.2011 / 02:35

10 respostas

60

Inicie e digite cmd na caixa de execução. Inicie o cmd e use cd para acessar a pasta de seu interesse:

cd \

Então

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
    
por 19.10.2011 / 02:51
31

Crie um arquivo bat em algum diretório conveniente então você pode copiar + colar o caminho curto desse caminho.

Você pode simplesmente executar command.com e continuar fazendo os comandos cd em seu diretório atual também.

Nos scripts em lote do Windows, %~s1 expande os parâmetros de caminho para nomes curtos . Crie este arquivo em lotes:

@ECHO OFF
echo %~s1

Liguei para o meu shortNamePath.cmd e chamei assim:

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

Aqui está uma versão que usa o diretório atual 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

Usando SET e uma variável nomeada

O Prompt de Comando do Windows tem algumas convenções para lidar com variáveis com espaços em seus valores que são difíceis de aprender e entender, especialmente se você tiver um fundo Unix. Você pode fazer

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

(com não entre aspas) ou

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

(observe o posicionamento não intuitivo das citações); então

CALL :testargs "%TESTPATH%"
        ︙

:testargs
echo %~s1
goto :eof
    
por 14.03.2014 / 00:11
9

O "nome abreviado" é realmente a antiga convenção de nomes do DOS 8.3, portanto todos os diretórios serão as primeiras 6 letras seguidas por ~ 1, assumindo que haja apenas um nome que corresponda, por exemplo:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG SOU DIRECTÓRIO
C: \ BCDEFG ~ 1 - C: \ BCDEFGHIJKL M Outro Diretório

aqui é a única exceção

C: \ ABCDEF ~ 1 - C: \ ABCDEFG SOU DIRECTÓRIO
C: \ ABCDEF ~ 2 - C: \ ABCDEFGHI Diretório também

    
por 19.10.2011 / 03:02
5

Aqui está um folheto :

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

Repartição :

cmd /c - Inicia uma nova instância do interpretador de comandos do Windows, executa o comando especificado por string e, em seguida, termina

for %%parameter in (set) do command - Condicionalmente executa um comando várias vezes.

echo - Exibe mensagens na tela. @ símbolo é o mesmo que ECHO OFF aplicado somente à linha atual.

%~s - O caminho expandido contém apenas nomes abreviados.

Fontes :

por 22.05.2017 / 08:42
1

Eu encontrei uma maneira muito útil de resolver o caminho curto do diretório atual (ou qualquer outra coisa) se você tiver o Powershell instalado.

Basta abrir o powershell no diretório atual

  • no windows cmd, digite powershell

  • se você tiver pasta aberta em gui, você pode digitar cmd.exe ou powershell.exe diretamente na barra de endereços da pasta.

Em seguida, dê o comando

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

Origem da informação: [ link

    
por 12.05.2018 / 13:16
1

Semelhante a resposta de Ivan Schwartz, você pode substituir "C: \ Arquivos de programas" por %cd% para obter as informações atuais. dir:

cmd /c for %A in ("%cd%") do @echo %~sA  
    
por 12.05.2018 / 17:31
0

Eu instalei módulos de nó executando npm install em um clichê. Ao tentar excluir essas pastas, o Windows não nos permite excluí-las, pois o caminho é muito longo para ser possível manipular.

Depois de algumas pesquisas superficiais, achei que seria o meu trecho de código para renomear as pastas de raiz para folha, de modo que também fosse lançada uma exceção de violação para essa tentativa.

Funciona para mim. A seguir está o código para o projeto 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);
        }
    }
    
por 06.11.2016 / 11:51
0

Como alternativa, você pode usar essa pequena ferramenta incrível chamada PathCopyCopy

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

Right-click in the destination folder => Path Copy => Short Path.

Concluído. Ele será copiado para sua área de transferência.

pré-visualização

    
por 23.06.2017 / 19:15
0

C: \ Users \ abcd > subst z: "c: \ Arquivos de Programas (x86) \ Ferramentas do Microsoft Office 365 \ Microsoft Visual Studio 14.0"

C: \ Users \ abcd > subst Z :: = > C: \ Arquivos de Programas (x86) \ Microsoft Office365 Tools \ Microsoft Visual Studio 14.0 " Esta é a maneira mais fácil que eu usei quando lidei com arquivos com espaços e isso é acessível a partir do explorador de arquivos também tem todos os mesmos privilégios de acesso.

    
por 02.12.2017 / 18:57
-2

Apenas substitua os espaços por

%20

É como as coisas são "traduzidas" e os espaços vão para% 20.

Se você realmente precisa de 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...
    
por 10.02.2016 / 16:18

Tags