Obtém o caminho de um arquivo sem seu 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

    
por Fernando YP 19.09.2018 / 21:21

1 resposta

1

Existem algumas maneiras de fazer isso a partir da linha de comando e colocarei duas que eu posso pensar abaixo para você fazer referência e teste quando tiver uma chance. Vou incluir recursos adicionais para estudos adicionais também.

Exemplo Um

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

Em seguida, %var% será a variável definida, portanto, faça referência apenas a %var% para o valor aplicável.

Exemplo Dois

Se você precisar percorrer alguma pasta com muitos arquivos .mp3 , poderá usar essa sintaxe

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

Em seguida, %var% será a variável definida, portanto, apenas faça referência a %var% para o valor aplicável. Você pode fazer referência a !var! dessa forma se precisar EnableDelayedExpansion dependendo do que exatamente você precisa realizar com o loop se é o modo como você planeja referenciar muitos arquivos e o caminho da pasta que os contém. Por fim, você pode usar dir /s /b para percorrer o diretório recursivamente também.

Mais recursos

  • Dir
  • Para

    Variable Substitutions (FOR /?)

    In addition, substitution of FOR variable references has been enhanced. You can now use the following optional syntax:

    %~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

    Delayed Expansion will cause variables within a batch file to be expanded at execution time rather than at parse time, this option is turned on with the SETLOCAL EnableDelayedExpansion command.


    When delayed expansion is in effect, variables can be immediately read using !variable_name! you can also still read and use %variable_name% that will show the initial value (expanded at the beginning of the line).

por 19.09.2018 / 22:25