Как мне рекурсивно перечислить все файлы типа * .mp3 в файле Windows .bat? - PullRequest
29 голосов
/ 01 июня 2010

Я хочу рекурсивно перечислить абсолютный путь ко всем файлам, которые заканчиваются на mp3 из данного каталога, который должен быть задан как относительный каталог.

Затем я хотел бы также удалить каталог из файла, и я прочитал, что переменные, которые находятся в for -области, должны быть заключены в ! s. Это верно?

Мой текущий код выглядит так:

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

Ответы [ 2 ]

74 голосов
/ 01 июня 2010

Используйте команду DIR:

dir /s/b *.mp3

Приведенная выше команда будет искать текущий путь и всех его дочерних элементов. Чтобы получить дополнительную информацию о том, как использовать эту команду, откройте окно командной строки и введите DIR /?.

6 голосов
/ 24 мая 2014

Пакетный файл ниже демонстрирует, как извлечь элементы имени файла из переменной в цикле for. Сохраните его как файл listfiles.bat и запустите "listfiles some \ folder * .mp3".

Я настроил поиск файла в качестве подпрограммы в командном файле, чтобы вы могли вставить его в свои собственные сценарии.

Вы также можете запустить "для /?" в командной оболочке для получения дополнительной информации о команде 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...