Preciso usar nomes abreviados de caminho para um aplicativo que estou usando. Por exemplo, eu preciso C:\PROGRA~1\
, ao contrário C:\Program Files
. O programa não pode manipular espaços e não aceita caminhos entre aspas (por exemplo "C:\Program Files"
).
Se ajudar, estou usando o Windows 7. Posso acessar qualquer versão desde o XP, se necessário.
/s
interruptor faz subpasta recursãoCrie um arquivo bat em algum diretório conveniente e copie + cole o caminho curto desse caminho.
Você também pode executar
command.com
e continuar executandocd
comandos no seu diretório atual.Nos scripts em lote do Windows,
%~s1
expande os parâmetros do caminho para nomes abreviados . Crie este arquivo em lote:Liguei para o meu
shortNamePath.cmd
e chamo assim:Aqui está uma versão que usa o diretório atual se nenhum parâmetro foi fornecido:
Chamado sem parâmetros:
Usando
SET
e uma variável nomeadaO Prompt de Comando do Windows possui algumas convenções para lidar com variáveis com espaços em seus valores que são um pouco difíceis de aprender e entender, especialmente se você tiver um plano de fundo do Unix. Você pode fazer
( sem aspas ) ou
(observe a colocação não intuitiva de aspas); então
fonte
Aqui está um liner :
Repartição :
cmd /c
- Inicia uma nova instância do interpretador de comandos do Windows, executa o comando especificado por string e finalizafor %%parameter in (set) do
comando - execute condicionalmente um comando várias vezes.echo
- Exibir mensagens na tela.@
O símbolo é o mesmo queECHO OFF
aplicado somente à linha atual.%~s
- Caminho expandido contém apenas nomes abreviados.Fontes :
fonte
cmd /c
? Se você estiver em uma janela do prompt de comando, basta digitar ofor %A in ("C:\Program Files") do @echo %~sA
comando e, se você digitar na caixa de diálogo "Executar", o resultado desaparecerá antes que você possa lê-lo.cmd /c
quando estiver fugindocmd
; você precisa do PowerShell , mas também precisa'...'
encerrar os tokens após/c
:cmd /c 'for %f in ("C:\Program Files") do @echo %~sf'
O "nome abreviado" é realmente a antiga convenção de nomenclatura do DOS 8.3; portanto, todos os diretórios serão as primeiras 6 letras seguidas
~1
assumindo que existe apenas um nome que corresponda, por exemplo:aqui é a única exceção
fonte
Program Files
eProgram Files (x86)
éPROGRA~1
e quais um éPROGRA~2
. A resposta de Paulo resolve esse problema....~4
), começaram com o que parece ser hash, por exemplo,ABxxxx~1
onde x era hexadecimal - o que não é muito fácil de ler.ABCDEFGH-CAT
, ele receberá um nome abreviadoABCDEF~1
. Se eu criarABCDEFGH-DOG
, o nome será abreviadoABCDEF~2
. Se eu, em seguida, apagarABCDEFGH-CAT
,ABCDEFGH-DOG
, ainda tem nome curtoABCDEF~2
. Não há como saber apenas olhando os nomes longos.~1
. Veja a regra que o Windows usa para gerar nomes abreviados . E você também pode definir manualmente o nome abreviadofsutil
, para que os dois nomes não tenham relação alguma.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 cmd janelas digite powershell
se você tiver uma pasta aberta no gui, poderá digitar cmd.exe ou powershell.exe diretamente na barra de endereços da pasta.
Então dê comando
Origem das informações: [ https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]
fonte
Semelhante à resposta de Ivan Schwartz , você pode substituir "C: \ Arquivos de Programas" por
%cd%
para obter o diretório atual:fonte
Como alternativa, você poderia usar esta pequena ferramenta chamada PathCopyCopy
Em alguns cliques, você pode obter o caminho longo e curto de literalmente qualquer pasta no menu contextual, por exemplo:
Feito. Será copiado para a sua área de transferência.
pré-visualização
fonte
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 podermos lidar.Depois de algumas pesquisas superficiais, pensei que seria correto meu trecho de código renomear as pastas da raiz para a folha, para que também gerasse qualquer exceção de violação para essa tentativa.
Funciona para mim. A seguir está o código para o projeto C #.
fonte
Essa é a maneira mais fácil que eu usei ao lidar com arquivos com espaços e também pode ser acessada pelo explorador de arquivos e possui os mesmos privilégios de acesso.
fonte
Apenas substitua os espaços por
É assim que as coisas são "traduzidas" e os espaços entram em% 20.
Se você realmente precisa de muito, basta abrir o navegador e digitar algo como
fonte
if exist C:\Program%20Files\ (echo exists)