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

use*_*570 105 batch-file

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

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

file1.txt
file2.txt
file3.txt
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Ste*_*han 207

完整的命令是:

dir /b /a-d
Run Code Online (Sandbox Code Playgroud)

让我分手吧

基本上/b就是你要找的东西.

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


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

  • 对我来说没问题:)`dir/b/ad> tmp.txt` (8认同)
  • 它也不适用于`/S` 来获取子目录的文件名。 (3认同)
  • 如果我想打印子目录文件的名称,则不排除. (2认同)
  • 这非常接近我所需要的。我需要绝对路径和递归到子目录。这是我使用的:`dir /B /AD /S` (2认同)

npo*_*aka 24

你也可以试试这个:

for %%a in (*) do echo %%a
Run Code Online (Sandbox Code Playgroud)

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


小智 10

1.打开记事本

2.新建文件

3.type波纹管

dir /b > fileslist.txt
Run Code Online (Sandbox Code Playgroud)

4.保存“ list.bat

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

示例输出: 在此处输入图片说明

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

dir /b /s > fileslist.txt
Run Code Online (Sandbox Code Playgroud)

  • 如果我不希望输出文件“fileslist.txt”包含在列表中怎么办? (3认同)

It *_* Me 8

  • 为什么不where改用dir

在命令行中:

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

在 bat/cmd 文件中:

@echo off 

for /f tokens^=* %%i in ('where .:*')do %%~nxi
Run Code Online (Sandbox Code Playgroud)
  • 输出:

file_0003.xlsx
file_0001.txt
file_0002.log
Run Code Online (Sandbox Code Playgroud)
where .:*
Run Code Online (Sandbox Code Playgroud)
  • 输出:

G:\SO_en-EN\Q23228983\file_0003.xlsx
G:\SO_en-EN\Q23228983\file_0001.txt
G:\SO_en-EN\Q23228983\file_0002.log
Run Code Online (Sandbox Code Playgroud)

对于递归:

where /r . *
Run Code Online (Sandbox Code Playgroud)
  • 输出:

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
Run Code Online (Sandbox Code Playgroud)
  • For 循环获取路径和名称:

  • 在命令行中:
for /f tokens^=* %i in ('where .:*')do @echo/ Path: %~dpi ^| Name: %~nxi
Run Code Online (Sandbox Code Playgroud)
  • 在 bat/cmd 文件中:
@echo off 

for /f tokens^=* %%i in ('where .:*')do echo/ Path: %%~dpi ^| Name: %%~nxi
Run Code Online (Sandbox Code Playgroud)
  • 输出:

 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
Run Code Online (Sandbox Code Playgroud)
  • For 循环递归获取路径和名称:

在命令行中:

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

在 bat/cmd 文件中:

@echo off 

for /f tokens^=* %%i in ('where /r . *')do echo/ Path: %%~dpi ^| Name: %%~nxi
Run Code Online (Sandbox Code Playgroud)
  • 输出:

 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
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您还需要子目录,则需要“ dir”命令和“ For”命令

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

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

del list1.txt
Run Code Online (Sandbox Code Playgroud)

将您的根目录放在dir命令中。它将创建具有完整路径名的list1.txt,然后仅具有文件名的list.txt。