这可能是一个非常简单的问题,但我遇到了麻烦。
我正在尝试编写一个批处理文件,我需要它来列出某个目录中的所有文件。
dir
命令可以做到这一点,但它也提供了一堆其他信息;我希望它仅列出 文件名 并排除其他任何内容。
我只想输出如下所示:
file1.txt
file2.txt
file3.txt
完整命令是:
dir /b /a-d
让我把它分解;
基本上,
/b
就是您要寻找的。
/a-d
将排除目录名称。
有关更多信息,请参阅
dir /?
了解可与 dir
命令一起使用的其他参数。
你也可以尝试这个:
for %%a in (*) do echo %%a
使用
for
循环,可以echo
出当前目录下的所有文件名。
直接从控制台打印它们:
for %a in (*) do @echo %a
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
@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
如果您也需要子目录,则需要“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。
使用以下代码创建批处理文件:
dir %1 /b /a-d > list.txt
然后拖放一个目录到其上,该目录内的文件将在list.txt中列出
Windows 10:
打开cmd
更改要为文件夹(d: ideos\movies)创建文本文件(movie_list.txt)的目录
输入以下命令
d: ideos\movies> dir /b /a-d > movie_list.txt
在 Powershell dir 中使用 Get-ChildItem,您可以使用 Powershell 命令进行过滤:
dir | select { $_.Name }
dir /s/d/a:-d "folderpath\*.*" > file.txt
并且,如果您不需要子文件夹中的文件,请丢失
/s