Obter o caminho de um arquivo sem o nome

1

O arquivo song.mp3 está localizado em

C:\x-folders\y-folder\z-folder\song.mp3

Como posso armazenar esse caminho em uma variável?

C:\x-folders\y-folder\z-folder\

Obrigado

Fernando YP
fonte
1
Estudo de FOR /?saída, especialmente para %~dpI.
Akina

Respostas:

1

Existem algumas maneiras de fazer isso na linha de comando e eu colocarei duas que eu posso pensar abaixo para que você faça referência e teste quando tiver uma chance. Também incluirei recursos adicionais para estudos adicionais.

Exemplo Um

for %a in ("C:\x-folders\y-folder\z-folder\song.mp3") do set var=%~dpa 

Então %var%será a variável definida, então apenas faça referência %var%ao valor aplicável.


Exemplo Dois

Se você precisar percorrer alguma pasta com muitos .mp3arquivos, poderá usar esta sintaxe

for /f "tokens=*" %a in ('dir /b "C:\SomeFolder\*.mp3"') do set var=%~fa\

Então %var%será a variável definida, então apenas faça referência %var%ao valor aplicável. Você pode fazer referência !var!dessa forma se precisar EnableDelayedExpansion, dependendo do que exatamente você precisa realizar com o loop, se esta for a maneira que você planeja referenciar muitos arquivos e o caminho da pasta residente. Por fim, você também pode usar dir /s /bpara percorrer o diretório recursivamente.


Recursos adicionais

  • Dir
  • Para

    Substituições variáveis ​​(FOR /?)

    Além disso, a substituição de referências de variáveis ​​FOR foi aprimorada. Agora você pode usar a seguinte sintaxe opcional:

    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    
  • EnableDelayedExpansion

    A Expansão atrasada fará com que as variáveis ​​de um arquivo em lotes sejam expandidas no tempo de execução, e não no tempo de análise. Essa opção está ativada com o comando SETLOCAL EnableDelayedExpansion.


    Quando a expansão atrasada está em vigor, as variáveis ​​podem ser lidas imediatamente usando! Nome_da_variável! você também pode ler e usar% variable_name% que mostrará o valor inicial (expandido no início da linha).

Pimp Juice IT
fonte
Resposta muito informativa. # 1
Tim_Stewart #