写bat脚本,检索目录及子目录下的所有文件,都移动到检索根目录下
时间: 2023-12-23 08:02:15 浏览: 67
用批处理获取当前目录下所有文件的路径
5星 · 资源好评率100%
可以使用以下的bat脚本实现:
```
@echo off
setlocal enabledelayedexpansion
set "root=%~dp0" // 设置检索根目录为当前脚本所在目录
for /r "%root%" %%a in (*) do (
set "filePath=%%~fa"
set "fileName=%%~nxa"
move "!filePath!" "%root%!fileName!" > nul
)
echo 操作完成!
pause
```
解释:
1. `setlocal enabledelayedexpansion`:启用变量的延迟环境扩展,以便在循环中使用变量。
2. `set "root=%~dp0"`:将脚本所在目录赋值给变量 `root`。
3. `for /r "%root%" %%a in (*) do (...)`:递归遍历 `root` 及其子目录下的所有文件,并将每个文件的路径赋值给变量 `filePath`,将文件名赋值给变量 `fileName`。
4. `set "filePath=%%~fa"`:使用 `%%~fa` 获取文件的完整路径。
5. `set "fileName=%%~nxa"`:使用 `%%~nxa` 获取文件的名称及后缀。
6. `move "!filePath!" "%root%!fileName!" > nul`:将当前文件移动到根目录下,并将移动操作的输出重定向到空设备。
7. `echo 操作完成!`:在操作完成后输出提示信息。
8. `pause`:暂停脚本的执行,等待用户按下任意键退出。
阅读全文