Em uma janela do DOS, como posso obter o nome completo / abreviado do DOS do diretório em que estou?
Por exemplo, se estou no diretório C:\Program Files\Java\jdk1.6.0_22
, desejo exibir seu nome abreviado C:\PROGRA~1\Java\JDK16~1.0_2
.
Sei que a execução dir /x
me dará os nomes curtos de arquivos / diretórios no diretório atual, mas não consegui encontrar uma maneira de exibir o caminho completo do diretório atual no formato de nome curto. Estou tendo que trabalhar meu caminho através do caminho da raiz, diretório por diretório, executando dir /x
em cada um.
Tenho certeza de que existe uma maneira mais fácil de fazer isso?
windows
command-line
CodeClimber
fonte
fonte
Respostas:
Alguma maneira mais simples?
fonte
for /d %I in (*) do @echo %~sI
todo segmento de caminho é curto, ótimo. O problema não foi diretamente com os nomes longos, nem mesmo os espaços, mas o pior é quando os personagens internacionais estão presentes, o que simplesmente mangueira meu script, tomando esta lista de dir como entrada.%
sinais:for %%I in ("C:\folder with spaces") do echo %%~sI
Você também pode inserir o seguinte em uma janela CMD:
Onde
<ParentDirectory>
é substituído pelo caminho completo do diretório que contém o item cujo nome você deseja.Enquanto a saída não é um simples como a resposta de Timbo , ele irá listar todos os itens no diretório especificado com o nome real e (se for diferente) o nome abreviado.
Se você usar,
for %I in (.) do echo %~sI
poderá substituir o.
pelo caminho completo do arquivo / pasta para obter o nome abreviado desse arquivo / pasta (caso contrário, o nome abreviado da pasta atual será retornado).Testado em Windows 7 x64.
fonte
Em scripts de lote do Windows,
%~s1
expande os parâmetros do caminho para nomes curtos . Crie este arquivo em lote:Liguei para o meu
shortNamePath.cmd
e chamo assim:Editar: aqui está uma versão que usa o diretório atual se nenhum parâmetro foi fornecido:
Chamado sem parâmetros:
fonte
%0
é o nome do caminho do script em lote).Ser um programador fez este projeto Winform de 10 minutos. Tem sido útil para mim. Tornar este aplicativo um menu de contexto para o explorador de arquivos economizaria mais cliques.
Form1.cs:
Form1.Designer.cs:
fonte
execute
cmd.exe
e faça o seguinte:Em seguida, command.com aparecerá e exibirá apenas caminhos curtos.
fonte
fonte
A resposta de Kimbo é perfeita para arquivos normais.
Para nomes de arquivo MsDos em HardLinks
Os links
mklink /H <link> <target>
físicos criados com não terão um nome de arquivo curto MsDos.No caso de você
dir /X
e você descobrirem esse nome curto ausente, você deve esperar o seguinte:Arquivo normal
Nesse caso
Eu tenho o que esperava
Arquivo de link físico
Nesse caso
Eu tenho o caminho normal do MsDos, mas o nome do arquivo normal.
fonte
semelhante a esta resposta, mas usa uma sub-rotina
fonte
Uma resposta mais direta é consertar o bug.
% SPARK_HOME% \ bin \ spark-class2.cmd; Linha 54
Broken: set RUNNER="%JAVA_HOME%\bin\java"
Windows Style: set "RUNNER=%JAVA_HOME%\bin\java"
Caso contrário, o RUNNER termina com aspas e o comando
"%RUNNER%" -Xmx128m ...
termina com aspas duplas. O resultado é que o Programa e o Arquivo são tratados como parâmetros separados.fonte
Inspirado pela resposta do Dr. Scripto
fonte
se for por meio de um arquivo em lote, use:
você pode usar o comando echo para verificar:
fonte
use este link, ele converterá automaticamente qualquer caminho fornecido para qualquer formato https://pathconverter-pp.azurewebsites.net
fonte