批量 批处理把子文件夹的文件移动到上级父目录中
原来的文件的存放方式如下:C:│├─a│├─1││1.pdf│││├─2││2.pdf│││├─3││3.pdf│││└─4│4.pdf│├─b│├─1││1.pdf││...
原来的文件的存放方式如下:
C:
│
├─a
│ ├─1
│ │ 1.pdf
│ │
│ ├─2
│ │ 2.pdf
│ │
│ ├─3
│ │ 3.pdf
│ │
│ └─4
│ 4.pdf
│
├─b
│ ├─1
│ │ 1.pdf
│ │
│ ├─2
│ │ 2.pdf
│ │
│ ├─3
│ │ 3.pdf
│ │
│ └─4
│ 4.pdf
│
└─c
├─1
│ 1.pdf
│
├─2
│ 2.pdf
│
├─3
│ 3.pdf
│
└─4
4.pdf
需要达到移动后的效果如下:
C:
│
├─a
│ 1.pdf
│ 2.pdf
│ 3.pdf
│ 4.pdf
│
├─b
│ 1.pdf
│ 2.pdf
│ 3.pdf
│ 4.pdf
│
└─c
1.pdf
2.pdf
3.pdf
4.pdf 展开
C:
│
├─a
│ ├─1
│ │ 1.pdf
│ │
│ ├─2
│ │ 2.pdf
│ │
│ ├─3
│ │ 3.pdf
│ │
│ └─4
│ 4.pdf
│
├─b
│ ├─1
│ │ 1.pdf
│ │
│ ├─2
│ │ 2.pdf
│ │
│ ├─3
│ │ 3.pdf
│ │
│ └─4
│ 4.pdf
│
└─c
├─1
│ 1.pdf
│
├─2
│ 2.pdf
│
├─3
│ 3.pdf
│
└─4
4.pdf
需要达到移动后的效果如下:
C:
│
├─a
│ 1.pdf
│ 2.pdf
│ 3.pdf
│ 4.pdf
│
├─b
│ 1.pdf
│ 2.pdf
│ 3.pdf
│ 4.pdf
│
└─c
1.pdf
2.pdf
3.pdf
4.pdf 展开
3个回答
展开全部
假设你的目标目录是c:\aaa(这个可以修改),下面有a,b,c等子目录,而每个子目录下面有分别有1,2,3,4等文件,那么可以用下面的代码:
@echo off & setlocal enabledelayedexpansion
set tp=c:\aaa
for /f "delims=" %%a in ('dir /ad /b /s %tp%') do (
set cp="%%~a"
for /f "delims=" %%i in ('dir /ad /b !cp! ^| find /v /c ""') do (set /a cnt=%%i)
if {!cnt!}=={0} (
set up="%%~da%%~pa"
echo move !cp!\*.* !up! 2>nul
echo rd /s /q !cp! 2>nul
)
)
endlocal & @echo on
测试通过后,可以把两个echo去除,就可具体执行了。
展开全部
建个批处理文件,然后用move命令就可以了。具体语法看帮助move /?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种移到上层的是否会有同名文件?如果有,怎么处理? 那被移走文件的子文件夹是否删除?
更多追问追答
追问
没有同名文件 在a或b或n的文件夹下面的都有1,2,3,4的文件夹 只需移动到a或b下面 同时删除1,2,3,4文件夹
追答
我不认为你所写的是真实文件名,但实际上不可能处理c盘下所有文件夹的,所以文件夹名采用了列举形式
@echo off
cd/d "c:\"
echo 正在移动...
for %%i in (a b c)do (
pushd "%%~i"
for /f "delims=" %%j in ('dir/b/s/a-d')do (
rem move "%%j" "%%i\"
echo %%j =^> %%i)
popd
for /d %%k in (*)do (
echo 删除文件夹 %%k
rem rd "%%k"
))
pause
本来已写的是实际操作代码,考虑到防误操作,改成仅显示,如认为正常,有两处rem去掉(move和rd之前的)再运行较可靠
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询