for /r %i in (*) do @echo %~ni
или
forfiles /s /c "cmd /c if @isdir==FALSE noquotes.bat @fname"
предполагая файл noquotes.bat
в вашем % PATH% с этим содержимым
@echo %~1
для / г подхода объяснил
for /r
рекурсивно просматривает текущий каталог (можно указать каталог for /r drive:\path\
, предполагается, что текущий каталог) и выполняет команду, указанную do, для каждого файла, соответствующего в наборе (*)
. Набор (.)
будет соответствовать только каталогам. @echo% ~ ni Эта команда работает как есть из приглашения. Удвойте свои кавычки, если вы положите их в пакетный файл. т.е.for /r %%i in (*) do @echo %%~ni
объяснил подход forfiles
/s
перечисляет текущий и все подкаталоги,
/c
выполняет команду внутри кавычек
@isdir
и @fname
является символом, выводимым в командную строку
. Дополнительный пакетный файл noquotes.bat
помогает, удаляя двойные кавычки с% ~ 1 (параметр 1),
forfiles
также позволяет указать путь, с которого следует начинатьforfiles /P C:\Windows ...