web-dev-qa-db-fra.com

Comment répertorier récursivement tous les fichiers de type * .mp3 dans un fichier Windows .bat?

Je souhaite répertorier récursivement le chemin absolu vers tous les fichiers se terminant par mp3 à partir d'un répertoire donné qui doit être donné comme répertoire relatif.

Je voudrais ensuite supprimer également le répertoire du fichier et j'ai lu que les variables qui sont dans une portée for- doivent être incluses dans !s. Est-ce correct?

Mon code actuel ressemble à ceci:

for /r %%x in (*.mp3) do (
    set di=%%x
    echo directory !di!
    C:\bla.exe  %%x !di!
)
31
clamp

Utilisez la commande DIR:

dir /s/b *.mp3

La commande ci-dessus recherchera le chemin actuel et tous ses enfants. Pour obtenir plus d'informations sur l'utilisation de cette commande, ouvrez une fenêtre de commande et tapez DIR /?.

77
Matthew Whited

Le fichier de commandes ci-dessous montre comment extraire des éléments d'un nom de fichier de la variable dans une boucle for. Enregistrez-le en tant que fichier listfiles.bat, et exécutez "listfiles some\folder * .mp3".

J'ai configuré la recherche de fichiers en tant que sous-routine dans le fichier de commandes afin que vous puissiez l'insérer dans vos propres scripts.

Vous pouvez également exécuter "for /?" dans un shell cmd pour plus d'informations sur la commande for.

@echo off
setlocal enableextensions enabledelayedexpansion
call :find-files %1 %2
echo PATHS: %PATHS%
echo NAMES: %NAMES%
goto :eof

:find-files
    set PATHS=
    set NAMES=
    for /r "%~1" %%P in ("%~2") do (
        set PATHS=!PATHS! "%%~fP"
        set NAMES=!NAMES! "%%~nP%%~xP"
    )
goto :eof
7
yoyo