Пакетный файл; Перечислить файлы в каталоге, только имена файлов?


121

Это, наверное, очень простой вопрос, но у меня с ним проблемы. По сути, я пытаюсь написать пакетный файл, и мне нужно, чтобы он перечислял все файлы в определенном каталоге. Команда dirсделает это, но также предоставит кучу другой информации; Я хочу, чтобы он перечислял ТОЛЬКО имена файлов и исключал все остальное.

Я просто хочу, чтобы результат выглядел так:

file1.txt
file2.txt
file3.txt

Заранее спасибо!


Ответы:


237

Полная команда:

dir /b /a-d

Позвольте мне разбить это;

В основном /bэто то, что вы ищете.

/a-d исключит имена каталогов.


Дополнительные сведения см. В разделе dir /?о других аргументах, которые можно использовать с dirкомандой.


8
Мне dir /b /a-d > tmp.txt
подходит

2
Также не работает /Sполучение имен файлов подкаталогов.
Farhan Ghumra 05

@xyroid ты читал селтен /a-d will the exclude directory names?
Стефан

4
Не исключено, что я хочу распечатать имена файлов подкаталогов.
Farhan Ghumra

Это было очень близко к тому, что мне было нужно. Мне нужны были абсолютные пути и рекурсия в подкаталоги. Вот что я использовал:dir /B /A-D /S
EmpathicSage

34

Вы также можете попробовать это:

for %%a in (*) do echo %%a

Используя forцикл, вы можете echoвывести все имена файлов в текущем каталоге.

Чтобы распечатать их прямо с консоли:

for %a in (*) do @echo %a

7

Если вам тоже нужны подкаталоги, вам понадобится команда "dir" и команда "For".

dir /b /s DIRECTORY\*.* > list1.txt

for /f "tokens=*" %%A in (list1.txt) do echo %%~nxA >> list.txt

del list1.txt

поместите свой корневой каталог в команду dir. Он создаст list1.txt с полными именами, а затем list.txt только с именами файлов.


5

1. открыть блокнот

2. создать новый файл

3. введите нижнюю строку

dir /b > fileslist.txt

4. Сохранить " list.bat"

Это оно. теперь вы можете скопировать и вставить этот " list.bat" файл в любое место вашей папки и дважды щелкнуть по нему, он создаст ""fileslist.txt " вместе с этой папкой каталога и списком имен файлов.

Пример вывода: введите описание изображения здесь

Примечание. Если вы хотите создать список имен файлов вместе с подпапкой, вы можете создать командный файл с приведенным ниже кодом.

dir /b /s > fileslist.txt

2
Что делать, если я не хочу, чтобы выходной файл "fileslist.txt" был включен в список?
Бехнам

4
  • Почему бы не использовать whereвместо этого dir?

В командной строке:

for /f tokens^=* %i in ('where .:*')do @"%~nxi"

В файле bat / cmd:

@echo off 

for /f tokens^=* %%i in ('where .:*')do %%~nxi
  • Вывод:

file_0003.xlsx
file_0001.txt
file_0002.log
where .:*
  • Вывод:

G:\SO_en-EN\Q23228983\file_0003.xlsx
G:\SO_en-EN\Q23228983\file_0001.txt
G:\SO_en-EN\Q23228983\file_0002.log

Для рекурсивно:

where /r . *
  • Вывод:

G:\SO_en-EN\Q23228983\file_0003.xlsx
G:\SO_en-EN\Q23228983\file_0001.txt
G:\SO_en-EN\Q23228983\file_0002.log
G:\SO_en-EN\Q23228983\Sub_dir_001\file_0004.docx
G:\SO_en-EN\Q23228983\Sub_dir_001\file_0005.csv
G:\SO_en-EN\Q23228983\Sub_dir_001\file_0006.odt
  • Для цикла получить путь и имя:

  • В командной строке:
for /f tokens^=* %i in ('where .:*')do @echo/ Path: %~dpi ^| Name: %~nxi
  • В файле bat / cmd:
@echo off 

for /f tokens^=* %%i in ('where .:*')do echo/ Path: %%~dpi ^| Name: %%~nxi
  • Вывод:

 Path: G:\SO_en-EN\Q23228983\ | Name: file_0003.xlsx
 Path: G:\SO_en-EN\Q23228983\ | Name: file_0001.txt
 Path: G:\SO_en-EN\Q23228983\ | Name: file_0002.log

  • Для цикла получить путь и имя рекурсивно:

В командной строке:

for /f tokens^=* %i in ('where /r . *')do @echo/ Path: %~dpi ^| Name: %~nxi

В файле bat / cmd:

@echo off 

for /f tokens^=* %%i in ('where /r . *')do echo/ Path: %%~dpi ^| Name: %%~nxi
  • Вывод:

 Path: G:\SO_en-EN\Q23228983\ | Name: file_0003.xlsx
 Path: G:\SO_en-EN\Q23228983\ | Name: file_0001.txt
 Path: G:\SO_en-EN\Q23228983\ | Name: file_0002.log
 Path: G:\SO_en-EN\Q23228983\Sub_dir_001\ | Name: file_0004.docx
 Path: G:\SO_en-EN\Q23228983\Sub_dir_001\ | Name: file_0005.csv
 Path: G:\SO_en-EN\Q23228983\Sub_dir_001\ | Name: file_0006.odt


2

Windows 10:

  1. открыть cmd

  2. смените каталог, в котором вы хотите создать текстовый файл (movie_list.txt) для папки (d: \ videos \ movies)

  3. введите следующую команду

    d: \ videos \ movies> dir / b / ad> movie_list.txt


2

создайте пакетный файл со следующим кодом:

dir %1 /b /a-d > list.txt

Затем перетащите на него каталог, и файлы внутри каталога будут перечислены в list.txt.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.