批处理文件;列出目录中的文件,仅列出文件名?


120

这可能是一个非常简单的问题,但是我遇到了麻烦。基本上,我试图编写一个批处理文件,并且我需要它列出某个目录中的所有文件。该dir命令将执行此操作,但它还会提供许多其他信息;例如:我希望它仅列出文件名并排除其他任何内容。

我只希望输出看起来像这样:

file1.txt
file2.txt
file3.txt

提前致谢!


Answers:


236

完整的命令是:

dir /b /a-d

让我分解一下;

基本上,这/b就是您要寻找的。

/a-d 将排除目录名称。


有关更多信息,请参见dir /?可与该dir命令一起使用的其他参数。


8
对我来说是可以的:) dir /b /a-d > tmp.txt
斯特凡·格兰隆

2
它也无法/S获取子目录的文件名。
Farhan Ghumra

@xyroid您读过seltene /a-d will the exclude directory names吗?
斯蒂芬

4
如果要打印子目录文件的名称,这并不排除。
Farhan Ghumra '18

这非常接近我的需求。我需要绝对路径并递归到子目录。这是我使用的: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循环递归获取路径和名称:

在命令行中:

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. 更改要在其中创建文件夹(d:\ videos \ movies)的文本文件(movie_list.txt)的目录

  3. 键入以下命令

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


2

使用以下代码创建一个批处理文件:

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

然后在其上拖放目录,目录中的文件将列在list.txt中


0

dir / s / d / a:-d“ folderpath *。*”> file.txt

并且,如果不需要子文件夹中的文件,则丢失/ s

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.