Как я могу рекурсивно перечислить имена файлов (только) в DOS / Windows? [Дубликат]

20

Возможное дублирование:
получить рекурсивные имена файлов в командной строке

Я хотел бы рекурсивно перечислить все файлы в каталоге, показывая только имена файлов (без расширений и без полных путей). Я использую Windows / DOS.

Самое близкое, что я мог получить, dirбыло dir /s /b, но он перечисляет полные пути, а также показывает расширения.

Ну, возможно, я мог бы жить с расширениями, но я должен избавиться от путей!

Есть идеи?

Дэвид Б
источник
1
Какая версия windows?
OldWolf
@OldWolf: XP. Я предпочитаю не использовать стороннее программное обеспечение /
Дэвид Б

Ответы:

28
cd /d C:\Path\To\Source\Folder
for /r %i in (*) do @echo %~ni

Если вам нужен список, сохраненный в файл, добавьте >> C:\Path\To\list_file.txtв конец forкоманды.

Если вам нужны расширения, измените %~niна%~nxi

Для того, чтобы использовать в пакетном файле, изменить все %к%%

afrazier
источник
6
Если вам нужны путь, имя и расширение, измените% ~ ni на% ~ pnxi
Deep
это работает, но не показывает скрытые файлы. Как я могу также увидеть скрытые файлы?
аля
@ala: Если вы хотите показать скрытые файлы, вам нужно будет использовать что-то вроде ответа Дэвида Реми только с соответствующими флажками, переданными dirкоманде.
Размягчитель
7

Если вы хотите загрузить powershell, эта команда должна это сделать.

get-childitem "d:\acc" -recurse|foreach {$_.Basename}
uSlackr
источник
5

Делая что-то вроде следующего, вы получите то, что хотите:

@for /f "delims=" %a in ('Dir /s /b %systemdrive%') do echo %~na

Просто передайте вывод в файл и используйте его оттуда, если это необходимо.

Дэвид Реми
источник
3

Не знаю, считаете ли вы это сторонним программным обеспечением или нет, так как оно от Microsoft и поставляется с 7, но PowerShell решит большинство ваших проблем довольно легко. Если вы еще не установили его, он доступен для XP на сайте Microsoft.

Get-ChildItem -path "C:\Program Files\" -recurse | foreach ($_) {
    write $_.name
}
OldWolf
источник