背景:
在一个文件夹A内,有若干个子文件夹,b1, b2, b3, ..., bn,每个子文件夹bx中,有文件或者文件夹。现在想吧所有bx及其子文件夹中的文件都移动到文件夹A下(或任意位置)。
方法:
@echo off
for /r %%a in (*.xlsx) do (
echo %%a
move "%%a" "%cd%"
)
pause
解释:
/r 递归扫描当前文件夹及其子文件夹
%%a 当前指向的文件路径
in 条件,对满足此条件的执行后边的 do 里的内容,这里只定移动后缀名是 xlsx 的文件
do 执行移动操作,这里边还用 echo 做了个输出,可有可无
move [source] [target] 移动操作,这里注意,这两个地址中不能包含空格,如果有,要像代码中用引号把这两个变量括起来。
%cd% 只当前目录,也就是这个bat文件所在的目录
删除空的文件夹:
当上述操作完成后,把空壳文件夹删除的需求可能就产生了。代码如下:
@echo off
for /f "delims=" %%a in ('dir /ad /b /s %cd%^|sort /r') do (
rd "%%a">nul 2>nul &&echo 空目录"%%a"成功删除!
)
pause
就不多解释了,我也没完全弄明白。。。。