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

问题描述 投票:0回答:9

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

我正在尝试编写一个批处理文件,我需要它来列出某个目录中的所有文件。

dir
命令可以做到这一点,但它也提供了一堆其他信息;我希望它仅列出 文件名 并排除其他任何内容。

我只想输出如下所示:

file1.txt
file2.txt
file3.txt
batch-file
9个回答
342
投票

完整命令是:

dir /b /a-d

让我把它分解;

基本上,

/b
就是您要寻找的。

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


有关更多信息,请参阅

dir /?
了解可与
dir
命令一起使用的其他参数。


44
投票

你也可以尝试这个:

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

使用

for
循环,可以
echo
出当前目录下的所有文件名。

直接从控制台打印它们:

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

18
投票
  • 为什么不使用
    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循环获取路径和名称:

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


14
投票

1.打开记事本

2.创建新文件

3.输入以下行

dir /b > fileslist.txt

4.保存“

list.bat

就是这样。现在您可以将此“

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

示例输出:

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

dir /b /s > fileslist.txt

8
投票

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


4
投票

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

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

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


3
投票

Windows 10:

  1. 打开cmd

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

  3. 输入以下命令

    d: ideos\movies> dir /b /a-d > movie_list.txt


2
投票

在 Powershell dir 中使用 Get-ChildItem,您可以使用 Powershell 命令进行过滤:

dir | select { $_.Name }

1
投票
dir /s/d/a:-d "folderpath\*.*" > file.txt

并且,如果您不需要子文件夹中的文件,请丢失

/s

© www.soinside.com 2019 - 2024. All rights reserved.