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

时间:2014-04-22 19:56:40

标签: batch-file

这可能是一个非常简单的问题,但我遇到了麻烦。基本上,我正在尝试编写批处理文件,我需要它来列出某个目录中的所有文件。 dir命令会执行此操作,但它也会提供一堆其他信息;我希望它只列出文件名并排除其他任何内容。

我只想让输出看起来像这样:

file1.txt
file2.txt
file3.txt

提前致谢!

8 个答案:

答案 0 :(得分:183)

完整命令是:

dir /b /a-d

让我分解一下;

基本上/b就是您所寻找的。

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


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

答案 1 :(得分:19)

你也可以试试这个:

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

使用for循环,您可以echo输出当前目录的所有文件名。

答案 2 :(得分:4)

如果你也需要子目录,你需要一个" 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。

答案 3 :(得分:3)

1。打开记事本

2。创建新文件

3。波纹管

SKView

4。保存“ dir /b > fileslist.txt

就这样。现在,您可以在文件夹的任何位置复制并粘贴此“ list.bat”文件,然后双击它,它将创建一个“ list.bat”以及该目录文件夹和文件名列表。

示例输出: enter image description here

注意:如果要与子文件夹一起创建文件名列表,则可以使用以下代码创建批处理文件。

fileslist.txt

答案 4 :(得分:2)

Windows 10:

  1. open cmd

  2. 更改要为文件夹创建文本文件(movie_list.txt)的目录(d:\ videos \ movies)

  3. 输入以下命令

    d:\视频\电影和GT; dir / b / a-d> movie_list.txt

答案 5 :(得分:1)

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

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

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

答案 6 :(得分:0)

dir / s / d / a:-d“ file.txt

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

答案 7 :(得分:0)

为什么不使用 where 代替 dir


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循环获取路径和名称:
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

  • 输出:
 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