18

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

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

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

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

Есть идеи?

4 ответа4

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

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

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

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

6

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

get-childitem "d:\acc" -recurse|foreach {$_.Basename}
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
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .