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
-
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
-
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).