如何用BAT批量提取文件夹及其子文件夹中的文件名
时间: 2025-06-28 13:02:17 浏览: 56
### 使用BAT脚本递归遍历目录树并提取所有文件名
为了实现递归查找指定文件夹及其子文件夹中的所有文件名,可以利用 `for` 循环配合 `/R` 参数来完成这一任务。下面提供了一个简单的批处理脚本来满足此需求:
```batch
@echo off
setlocal enabledelayedexpansion
rem 设置要遍历的目标路径,默认当前目录
set targetPath=.
rem 创建或清空输出文件
>filelist.txt type nul
rem 开始遍历目标路径下所有的文件,并记录到 filelist.txt 中
for /r "%targetPath%" %%i in (*) do (
echo %%~nxi >> filelist.txt
)
endlocal
pause
```
上述代码会创建一个名为 `filelist.txt` 的文本文件[^2],并将找到的所有文件的名字(不含路径)写入其中。
如果希望连同完整的相对路径一起保存,则可做如下调整:
```batch
@echo off
setlocal enabledelayedexpansion
rem 设置要遍历的目标路径,默认当前目录
set targetPath=.
rem 创建或清空输出文件
>fullpath_filelist.txt type nul
rem 遍历目标路径下的所有文件,包括完整路径一并记录至 fullpath_filelist.txt 文件内
for /r "%targetPath%" %%f in (*) do (
echo %%f >> fullpath_filelist.txt
)
endlocal
pause
```
这段改进后的程序会在 `fullpath_filelist.txt` 文件里存储带有完整路径的文件列表。
#### 注意事项
- `%targetPath%` 变量用于定义待搜索的根目录;默认情况下设置为当前工作目录 (`.`),可以根据实际需要更改为其他绝对或相对路径。
- `%%~nxi` 表达式用来获取文件名称和扩展名而不带任何路径信息;而 `%%f` 则返回整个文件路径字符串。
- `>` 和 `>>` 是重定向运算符,前者用于覆盖现有文件内容,后者则追加新数据到已有文件末尾。
阅读全文
相关推荐

















