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

这可能是一个非常简单的问题,但我在这方面遇到了麻烦。

我试图写一个批处理文件,我需要它列出在某个目录中的所有文件。dir命令可以做到这一点,但是它也提供了大量其他信息; 我希望它只列出 文件名并排除其他任何信息。

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

file1.txt
file2.txt
file3.txt
421125 次浏览

完整的命令是:

dir /b /a-d

让我打断一下

基本上 /b就是你要找的。

/a-d将排除目录名。


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

你也可以试试这个:

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

使用 for循环,你可以输出工作目录的所有文件名。

直接从控制台打印它们:

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

视窗10:

  1. 打开 cmd

  2. 更改要为文件夹创建文本文件(film _ list.txt)的目录(d: 视频电影)

  3. 键入以下命令

    D: 视频电影 > < strong > dir/b/a-d > film _ list. txt

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

1. 打开记事本

2. 创建新文件

3. 打波纹管

dir /b > fileslist.txt

4. 保存“ list.bat

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

输出样本: enter image description here

注意: 如果您想创建文件名列表以及子文件夹,然后您可以创建批处理文件以下代码。

dir /b /s > fileslist.txt

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

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

然后拖放一个目录,目录中的文件将在 list.txt 中列出

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

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

  • 为什么不用 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 loop get path and name:

  • 在命令行中:
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

  • 进一步阅读:

    [√] 网址: http://ss64.com/nt/Where. rel = “ norefrer”> Where

    [√] 网站: http://www.petri.com/using-Where-exe